我在我的 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() 能够获取传入的数据包。