我在busybox(内核3.0.35 ARM)上运行c ++应用程序,它监听多播数据包。一切似乎工作正常,直到我发现如果我启动应用程序与网络电缆拔出,然后插入它以后它将不会收到多播数据包。我无法弄清楚为什么。没有错误,所有设置操作(bind,setsockopt,...)都成功完成,ip maddr也显示正确的信息。只有select()不会报告任何传入数据。如果链接不起来,内核会有什么不同吗?
有趣的是,同一个应用程序还会在不同的地址上发送多播数据包,这似乎不会受到链接状态的影响,一旦我插入电缆,它就会很愉快地传输。
有什么想法吗?
谢谢, 汤姆
答案 0 :(得分:0)
大概是你在启动时发出JOIN。如果未插入电缆,则IGMP JOIN请求无法到达任何地方,因此路由器不知道向您发送多播。