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

时间:2011-06-22 09:01:36

标签: sockets networking tcp udp

首先,在同一台服务器上同时使用UDP和TCP是否有任何问题?

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

2 个答案:

答案 0 :(得分:89)

是的,您可以为TCP和UDP使用相同的端口号。许多协议已经这样做了,例如DNS适用于udp / 53 tcp / 53。

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

编写服务器时,请记住TCP套接字的事件序列比UDP套接字要困难得多,因为除了普通的socketbind调用之外,还有到listenaccept

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

答案 1 :(得分:6)

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

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