linux下同一套接字绑定网卡接收单播/多播报文

iron_li 2014-09-10 11:57:52
大家好,我想在Linux下使用qt,通过一个QUdpSocket对象绑定某一块网卡,既接收单播报文,又接收多播报文。
目前可通过bind绑定某一块网卡接收单播报文,不过多播报文就无法收到;
如果要接收多播报文,bind不能绑定具体哪块网卡的地址,否则收不到多播报文,使用joinMulticastGroup()指定从哪块网卡接收多播报文,这样虽然可以从指定网卡接收多播报文,但同时也可以接收到来自所有网卡的单播报文;
参考了C的实现方式,也没有发现可以实现的方式,原因和qt下大致一样,有人建议用两个套接字,一个接收单播,一个接收多播,如果这样,那单播和多播的端口还得不一样,有点麻烦,好像windows下就可以实现,不论是单播还是多播都可以通过bind绑定网卡接收;
不知各位大牛有何高见?
...全文
358 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
momo001 2015-10-12
  • 打赏
  • 举报
回复
您好!我现在遇到相同问题,不知道你的问题是怎么解决的
iron_li 2014-09-16
  • 打赏
  • 举报
回复
自己顶一下。
iron_li 2014-09-10
  • 打赏
  • 举报
回复
在windows上使用qt 5.3.1+minGW,通过bind来绑定单播/多播从指定网卡收数据成功,看来windows和linux在这方面有区别啊。
iron_li 2014-09-10
  • 打赏
  • 举报
回复
系统环境为linux,硬件环境为双网卡,当接收数据时,两块网卡都接收到一样的数据,但只是从一块网卡收,等于另一块网卡为备份数据,当正在使用的网卡出问题时,马上从另一块网卡接收数据。

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧