首页
社区
课程
招聘
[旧帖] [编程求助]怎么识别广播和非广播消息 0.00雪花
发表于: 2011-4-27 16:53 2960

[旧帖] [编程求助]怎么识别广播和非广播消息 0.00雪花

2011-4-27 16:53
2960
我正在用VC写一个聊天软件,遇到一个问题,我想在用户打开软件的时候发送一个广播消息,好让别人知道有用户上线了,然后把新上线的用户的ID打印到好友列表里,在这之后就是通过固定IP使用UDP进行聊天了,我就是想知道怎么让接收者知道他接收的是广播消息还是非广播消息?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 242
活跃值: (443)
能力值: ( 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,也没实验行不行 /:^|
2011-4-27 17:22
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在数据包中加入标志部分,区别广播消息和非广播消息。发送广播消息和非广播消息时,在数据包前加入标志信息。
2011-4-29 14:38
0
游客
登录 | 注册 方可回帖
返回
//