能力值:
( LV11,RANK:188 )
|
-
-
2 楼
判断自己的IP地址 getsockname
我没试研,只是提个建议,不确定这个地址在recv后随着实际改变(?)
这个网页提供了几个可用的建议:
http://hi.baidu.com/plovemxz/blog/item/124c2a0779d62e6f020881f9.html
你可以这样做。
2个udp socket
单播的那个socket bind INADDR_ANY并且设置SO_BROADCAST选项为0,此时他只接受单播数据报
广播那个socket bind 255.255.255.255,并且设置SO_BROADCASE选项为1,此时他只接受UDP广播。
为了防止接收到同一个广播的2分copy,如果两个网卡位于同一个子网,那么就用ifconfig命令disable其中一块网卡的BROADCAST标志,让其不能接受以太网广播。
你也可以使用ioctl的SIOCSIFFLAGS方法去掉一个接口的标志IFF_BROADCAST,使之不能接受以太网广播
windows有一个对应的WSArecvmsg,也没实验行不行 /:^|
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
在数据包中加入标志部分,区别广播消息和非广播消息。发送广播消息和非广播消息时,在数据包前加入标志信息。
|
|
|