如果没有网络电缆绑定套接字,则不会收到多播数据包

时间:2013-07-29 18:57:14

标签: kernel multicast busybox

我在busybox(内核3.0.35 ARM)上运行c ++应用程序,它监听多播数据包。一切似乎工作正常,直到我发现如果我启动应用程序与网络电缆拔出,然后插入它以后它将不会收到多播数据包。我无法弄清楚为什么。没有错误,所有设置操作(bind,setsockopt,...)都成功完成,ip maddr也显示正确的信息。只有select()不会报告任何传入数据。如果链接不起来,内核会有什么不同吗?

有趣的是,同一个应用程序还会在不同的地址上发送多播数据包,这似乎不会受到链接状态的影响,一旦我插入电缆,它就会很愉快地传输。

有什么想法吗?

谢谢, 汤姆

1 个答案:

答案 0 :(得分:0)

大概是你在启动时发出JOIN。如果未插入电缆,则IGMP JOIN请求无法到达任何地方,因此路由器不知道向您发送多播。