首先,使用UDP和TCP在同一台服务器上是否存在问题?
其次,我可以使用相同的端口号吗?
首先,使用UDP和TCP在同一台服务器上是否存在问题?
其次,我可以使用相同的端口号吗?
是的,你可以同时使用同一个端口号来处理TCP和UDP协议。很多协议已经这么做了,比如DNS使用udp/53 和 tcp/53。
技术上,每个协议的端口池是完全独立的,但对于可以使用TCP或UDP的高级协议而言,默认情况下它们使用相同的端口号是一种惯例。
当编写服务器时,请注意TCP套接字的事件顺序要比UDP套接字复杂得多,因为除了普通的socket
和bind
调用外,您还需要进行listen
和accept
调用。
此外,accept
调用将返回一个新的套接字,您还需要在该套接字上进行接收事件的轮询。您的服务器应该准备在原始套接字上继续accept
连接,同时服务于多个客户端,每个客户端都将在其自己的套接字上触发接收事件。
首先,服务器上同时使用tcp和udp没有问题。
其次,我们可以在同一端口上同时有UDP和TCP请求,因为每个请求都由源IP,目标IP,源端口,目标端口和协议组成的五元组来标识 (因为协议可以是TCP或UDP)。