TCP 和 UDP 套接字可以使用相同的端口吗?

首先,在同一台服务器上同时使用 UDP 和 TCP 有什么问题吗?

其次,我可以使用相同的端口号吗?

77978 次浏览

是的,您可以对 TCP 和 UDP 使用相同的端口号。许多协议已经这样做了,例如 DNS 在 udp/53 还有 tcp/53上工作。

从技术上讲,每个协议的端口池是完全独立的,但是对于可以使用 TCP 或 UDP 的更高级别的协议,它们默认使用相同的端口 号码

在编写服务器时,请记住 TCP 套接字的事件序列要比 UDP 套接字的事件序列难得多,因为除了正常的 socketbind调用之外,您还必须调用 listenaccept

此外,accept调用将返回一个新的套接字和 那个套接字,然后您还必须轮询接收事件。您的服务器应该准备好在原始套接字上继续 accepting 连接,同时服务多个客户端,每个客户端将触发自己套接字上的接收事件。

首先,在服务器上使用 tcp 和 udp 没有问题。

其次,我们可以在同一个端口上同时拥有 UDP 和 TCP 请求,因为每个请求都是由源 IP、目的地 IP、源端口、目的地端口、 PROTOCOL (协议可以是 TCP 或 UDP)所包含的一个五元组来标识的。