可以对TCP和UDP使用相同的端口号,许多协议已经这样做了,例如DNS就在udp/53和tcp/53上工作。
从技术上讲,每种协议的端口池是完全独立的,但对于那些可以使用TCP或UDP的高级协议来说,通常习惯它们默认使用相同的端口号。
编写服务器时,请注意,TCP套接字的事件序列比UDP套接字要复杂得多,因为除了正常的socket
和bind
外,你还必须listen
和accept
。
此外,accept
将返回一个新的套接字,正是这个套接字,你将必须继续轮询接收事件。你的服务器应该准备好在原始套接字上继续接受连接的同时,同时服务多个客户端,每个客户端都将在他们自己的套接字上触发接收事件。
来源:https://stackoverflow.com/questions/6437383/can-tcp-and-udp-sockets-use-the-same-port