1

我在busybox(内核3.0.35 ARM)上运行了c++应用程序,它监听多播数据包。一切似乎都很好,直到我发现如果我在拔掉网络电缆的情况下启动应用程序,然后再将其插入,它将不会收到多播数据包。我不知道为什么。没有错误,所有设置操作(bind,setsockopt,...)都成功完成,ip maddr 也显示正确的信息。只有 select() 不会报告任何传入数据。如果链接未启动,内核是否会有所不同?

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

有任何想法吗?

谢谢,汤姆

4

1 回答 1

0

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

于 2013-07-29T21:53:55.713 回答