2

我在我的 Windows 7 机器上遇到这个问题,当我尝试在连接到非 192.168.XX 网络的服务器上监听时,Java 中对 MulticastSocket.receive() 的调用将无限期挂起(它永远不会接收数据包) . 只要服务器连接在 192.168.XX 网络上,MulticastSocket.receive() 就不会挂起。我相当确定这是我的 Windows 7 机器上的配置问题,因为它适用于我工作场所运行 Windows XP 和 Ubuntu 10.04 的其他开发系统。

任何帮助,将不胜感激。

更新:

我想通了为什么 MulticastSocket.receive() 无限期挂起。发生的事情是 Windows 防火墙阻止了来自与我的服务器对应的网络的传入数据包。对此问题的快速解决方法是禁用该网络上的 Windows 防火墙(在我的情况下,我在公共网络上禁用了 Windows 防火墙)。之后,MulticastSocket.receive() 能够获取传入的数据包。

4

1 回答 1

2

“非 192.168.XX 网络”表示监听机器192.168.XX 网络上。如果是这种情况,则可能是多播流量没有在网络之间路由(通常不是)。您提到的其他开发机器是否与 Windows 7 机器在同一网络上?还是它们是双宿主的(连接到两个网段)?

您可以查看您的网络管理员是否可以配置其路由器以传递此流量。

于 2013-03-01T21:13:02.793 回答