我使用recvfrom从网络接收多播消息。系统上有两个网络接口,recvfrom仅从第一个接口接收数据。当第二个接口工作正常时,recvfrom会被无限期阻塞,并且仅在切换到第一个接口后才会收到数据包。在打开socket.Removing时,在set选项中使用SO_REUSEADDR也无济于事。有什么想法吗?我被卡住了。
发布于 2010-08-17 23:59:43
我会为每个接口创建一个套接字,并显式绑定到该接口,而不是使用INADDR_ANY。
使用INADDR_ANY的问题是,一旦你收到一个数据报,套接字可能隐式地绑定到数据报到达的接口,我想它必须是这样的,这样你才能从数据报到达的接口发送响应……
发布于 2010-08-23 21:03:19
每当网络接口发生变化时,我都可以通过在多播套接字上使用DROP_MEMBERSHIP和ADD_MEMBERSHIP来解决这个问题。我还必须更改套接字库,最初它用来返回第一个可用多播接口(即使没有分配IP ),以返回启用了多播并且也分配了IP地址的接口。
https://stackoverflow.com/questions/3502442
复制相似问题