====== UDP 端口监听 ======
===== 1. Windows 7 Python2.7 测试 =====
==== 1.1 多个应用程序(app)绑定同一常规(非组播)IP地址和端口 ====
- 两个程序同时bind同一IP和端口,不报错,先运行的app可以接收数据,后运行的app收不到数据
- 关闭先运行的app,后继运行的app能接受收据
- netstat -an | findstr 8000 可见IP:PORT被监听多次
UDP 192.168.1.80:8000 *:*
UDP 192.168.1.80:8000 *:*
UDP 192.168.1.80:8000 *:*
==== 1.2 多个应用程序(app)绑定 0.0.0.0 和相同端口 ====
- 结果同上
- netstat -an | findstr 8000 可见IP:PORT被监听多次
UDP 0.0.0.0:8000 *:*
UDP 0.0.0.0:8000 *:*
UDP 0.0.0.0:8000 *:*
==== 1.3 多个应用程序(app)分别绑定常规IP地址和0.0.0.0的相同端口 ====
- 绑定常规IP地址的app收到数据,绑定0.0.0.0的app收不到
- 关闭绑定常规IP地址的app后,绑定0.0.0.0的app能接受收据
* 推测:绑定指定IP地址比绑定通用(0.0.0.0)地址优先度高
UDP 0.0.0.0:8000 *:*
UDP 192.168.1.80:8000 *:*
==== 1.4 多个应用程序(app)绑定同一组播IP地址和端口 ====
- 不能bind组播IP,bind报错,只能设置socket的组播特性,监听0.0.0.0
- 发到指定IP(非组播)的数据,先运行的app可以收到,后运行的收不到
- 发向组播地址(224.0.0.1)的数据,所有app都能收到
- netstat -an | findstr 8000 可见IP:PORT被监听多次
UDP 0.0.0.0:8000 *:*
UDP 0.0.0.0:8000 *:*
UDP 0.0.0.0:8000 *:*
===== 2. Centos 7 Python2.7 测试 =====
==== 2.1 多个应用程序(app)绑定同一常规(非组播)IP地址和端口 ====
与测试1.1完全相反
后运行的可收数据,先运行的不能接收数据,后运行的退出后,先运行的app可以接收数据
==== 2.2 多个应用程序(app)绑定 0.0.0.0 和相同端口 ====
同上
==== 2.3 多个应用程序(app)分别绑定常规IP地址和0.0.0.0的相同端口 ====
符合1.3的测试
==== 2.4 多个应用程序(app)绑定同一组播IP地址和端口 ====
- 1. 测试条件与1.4相同(同样绑定0.0.0.0),符合1.4的测试
- 2. 附加测试,Linux 可以绑定组播地址
- 3. 发到组播组的数据,监听组播地址和监听(0.0.0.0)的app都能收到
- 4. 发向指定地址(192.168.1.179)的数据,只有监听(0.0.0.0)的app能收到
[lhs@localhost ~]$ netstat -an | grep 8000
udp 0 0 0.0.0.0:8000 0.0.0.0:*
udp 0 0 224.0.0.1:8000 0.0.0.0:*
udp 0 0 224.0.0.1:8000 0.0.0.0:*