Server端:
TCP和UDP是传输层两种不同的协议类型,在操作系统中有不同的协议处理栈,因而其可以在作为Server时绑定相同端口。
在绑定端口(使用bind()方法)时,判断重复的依据是 IP+端口 ,所以当绑定的端口相同但IP不同时,也是可以绑定成功的。
TCP在重启时,由于主动关闭,所以有2MSL的TIME_WAIT。如果等待时间未过,启动时会报Address already in use 的错误。解决方法是指定使用 so_reuseaddr 选项。
Client端:
客户端可以使用同一个端口连接多个服务。判重的标准是[源IP,源端口,目标IP,目标端口]。但是如果使用绑定(使用bind()方法),则判重标准依然是IP+端口。