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

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

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

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

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

在编写服务器时,要记住TCP套接字事件的顺序比UDP套接字要困难得多,因为正常的socketbind调用也必须acceptaccept

此外, accept调用将返回一个新的套接字,它是那个套接字,你将不得不轮询接收事件。 您的服务器应该准备继续accept原始套接字上的连接,同时服务多个客户端,每个客户端都将在自己的套接字上触发接收事件。

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

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