尝试在 MulticastSocket 上调用 joinGroup(addr) 时出现 SocketException。这只发生在我们设置为在机器启动时自动启动我们的应用程序的 Windows 机器上。
似乎抛出异常是因为 Windows 尚未完全完成其启动过程,这里是异常。
java.net.SocketException: error setting options
at java.net.PlainDatagramSocketImpl.join(Native Method)
at java.net.PlainDatagramSocketImpl.join(Unknown Source)
at java.net.MulticastSocket.joinGroup(Unknown Source)
在我们的应用程序启动时,如果我们在尝试加入群组之前等待一分钟,一切正常。
所以我们决定放入一个重试循环,以便它在网络可用时立即连接,这似乎工作。两次失败后,第三次尝试加入该组成功。
问题是,现在 MulticastSocket 没有收到来自组的任何消息,即使它加入得很好。
每次失败后我都会创建一个新的 MulticastSocket 并丢弃旧的。
为什么在一个 MulticastSocket 上加入组失败会影响没有任何错误加入的组,我怎么可能解决这个问题?