我正在使用recvfrom从网络接收muticast消息。 系统上有两个网络接口,recvfrom仅从第一个接口接收。 当第二个接口正常工作时,recvfrom被无限期阻塞,并且在切换到第一个接口后才收到数据包。 SO_REUSEADDR在打开套接字时用于设置选项。除此之外也无济于事。 有任何想法吗?? 我被卡住了。
答案 0 :(得分:0)
我为每个接口创建一个套接字,并显式绑定到接口而不是使用INADDR_ANY
。
使用INADDR_ANY
的问题是,一旦收到数据报,套接字可能隐式绑定到数据报到达的接口,恕我直言,它必须是这样你可以从接口发送响应数据报到达了......
答案 1 :(得分:0)
每当网络接口发生变化时,我就可以通过在多播套接字上使用DROP_MEMBERSHIP和ADD_MEMBERSHIP来解决这个问题。 我还必须对套接字库进行更改,最初它用于返回第一个可用的支持多播的接口(即使没有分配IP),以返回已启用多播并且还分配了IP地址的接口。