测试平台分别是Windows 7 64位旗舰版和CentOS 6.5.
测试方式就是两个tcp或udp服务器,分别启动,设置或不设置SO_REUSEADDR选项,看绑定的冲突情况。结论如下图
有几个基本结论:
1、只要端口不同,两个server绑定就不会有问题。
2、TCP和UDP的端口管理互不影响,端口相同也没任何问题。
3、在同一端口的绑定中,linux比windows更严格。如在开启了
SO_REUSEADDR的情况下,相同IP和端口的两个server在windows上竟然
都可以绑定成功,而客户端连接的去向跟2个server启动顺序有关系
4、在不开启SO_REUSEADDR时,TCP与UDP对相同IP相同端口容忍度为零。
5、有一个比较有意思的对照是:在UDP协议中,当SrvA和SrvB都绑定0.0.0.0和相同端口时,设置了OS_REUSEADDR选项的结果截然相反。Linux中后启动的能收到UDP数据,而windows先启动的能收到数据。
其他结论,请各取所需。
阅读(749) | 评论(0) | 转发(0) |