首先引别人的组播测试如下
1. 一个udp client可以同时往多个组播地址发送数据,多个udpclient可以同时往一个组播发数据。
2. 本地udp必须监听组播端口,否则收不到数据。
3. 一个udp可以同时加入多个组播组,多次加入同一组播组会出异常,退出一个未加入的组也会出异常。
4. udp组播接收时可以得到发送端的地址。
5. 即使无任何client接收,发送数据到组播地址也会占用网络流量。
6. 加入一个组播组后,即使监听的端口与组播端口不匹配,数据流量也会发过来占用网络带宽,但无法接收到数据。
7. 组播发送者不用加入组播,加入后数据由组播端发过来占用带宽。
8. 组播接收方程序关闭后,未退出组播组,经观察流量也降低,说明操作系统(Windows7)会自动清理并退出组播组。
网络程序中有绑定。这几天写几个广播和多播的程序,发现接收端UDP绑定也即bind时,若不为INADDR_ANY。就会出现收不到。
后来想一下,这个bind只是IP层面的东西。但是广播组播接收的一般是239.XX.XX.XX XX.XX.XX.255之类的数据。所以必须绑定这个。
以广播为例,若主机上两块网卡,仅想从其中一块接收数据。则可以SO_BINDTODEVICE直接绑定到设备上。
才知道 广播 多播 多个进程同时绑定。那就解决了进程间广播的问题。