Linux、windows组播通信所遇坑集合
windos系统虚拟网卡导致的组播不通很多搞代码的童鞋,会在windows上安装虚拟机捣鼓各种Linux神技。很长一段时间,爽并舒服着,突然有一天蛋疼的问题找上门了:写的组播程序怎么也通不了,程序检查了一遍又一遍,头发抓掉一把又一把,还是没发现任何问题,突然灵光一现,借助网络调试工具吧,可惜然并卵,不通还是不通。码友,不用愁了,请看过来!诊断是否虚拟网卡导致按下Win+R,运行中输入cmd,再Do
·
windos系统
虚拟网卡/多网卡导致的组播不通
很多搞代码的童鞋,会在windows上安装虚拟机捣鼓各种Linux神技。很长一段时间,爽并舒服着,突然有一天蛋疼的问题找上门了:写的组播程序怎么也通不了,程序检查了一遍又一遍,头发抓掉一把又一把,还是没发现任何问题,突然灵光一现,借助网络调试工具吧,可惜然并卵,不通还是不通。码友,不用愁了,请看过来!
问题诊断
按下Win+R
,运行中输入cmd
,再Dos窗口中输入命令:
netsh interface ipv4 show joins
查看哪张网卡加入了你需要的组播地址,示例如下图所示:
上图中如228.88.88.88
是我程序加入的组播,如果在你想要的物理网卡上,通信一般没问题,如果出现在虚拟网卡上,恭喜你中奖了。
解决方案
1、禁用多余网卡
2、在创建socket时,绑定一个物理网卡上的IP地址
网卡双网段导致的组播不通
如果网卡和组播地址关联无问题,仍然不通,可能就是由于此问题导致的
解决方案
- 简单粗暴的方法,在IPv4高级TCP/IP设置中,去掉不需要的IP
- 实在需要两个网段组播互通,技术手段设置
备注:仅供参考,未经验证
A、通过网关,进行路由,在网关路由器(可以是同一台,甚至一个网口做子接口;也可以是2台路由器)上增加这2个网段的路由【家用路由器就不要考虑了】
ip router 0.0.0.0 0.0.0.0 192.168.1.1(假设其中一个网段为192.168.1.x)
ip router 0.0.0.0 0.0.0.0 192.168.2.1
B、修改掩码,使2个网段变成一个网段
原来是192.168.1.1/255.255.255.0,改为255.255.0.0
Linux 系统
未增加路由导致组播不通
问题诊断
在终端中,输入route
查看当前路由表,如下图所示:
如果没有相应路由,应该就是此问题导致。
解决方案
增加相应路由
route add -net 224.0.0.0 netmask 240.0.0.0 ${netcardName}
虚拟网卡/多网卡导致的组播不通
问题诊断
终端输入命令netstat -g
,查看网卡加入的组播,如下图所示:
解决方案
1、禁用多余网卡
2、在创建socket时,绑定一个物理网卡上的IP地址
更多推荐
已为社区贡献1条内容
所有评论(0)