recvfrom卡在一个界面上

时间:2010-08-17 12:38:36

标签: sockets networking

我正在使用recvfrom从网络接收muticast消息。 系统上有两个网络接口,recvfrom仅从第一个接口接收。 当第二个接口正常工作时,recvfrom被无限期阻塞,并且在切换到第一个接口后才收到数据包。 SO_REUSEADDR在打开套接字时用于设置选项。除此之外也无济于事。 有任何想法吗?? 我被卡住了。

2 个答案:

答案 0 :(得分:0)

我为每个接口创建一个套接字,并显式绑定到接口而不是使用INADDR_ANY

使用INADDR_ANY的问题是,一旦收到数据报,套接字可能隐式绑定到数据报到达的接口,恕我直言,它必须是这样你可以从接口发送响应数据报到达了......

答案 1 :(得分:0)

每当网络接口发生变化时,我就可以通过在多播套接字上使用DROP_MEMBERSHIP和ADD_MEMBERSHIP来解决这个问题。 我还必须对套接字库进行更改,最初它用于返回第一个可用的支持多播的接口(即使没有分配IP),以返回已启用多播并且还分配了IP地址的接口。