我在 Android 上有一个服务,它监听并响应它通过多播接收的数据包。
这在大多数情况下都有效,但不幸的是,我发现它会时不时地停止接收数据包。线程在调用 MulticastSocket.receive() 时保持阻塞,但没有任何结果。我一直在慢慢地试图找出是什么触发了这种情况,我发现关闭再打开无线,或者改变无线连接就可以了。
为了成功继续监听我的数据包,我需要关闭 MulticastSocket 并重新创建它。但是,我还没有找到任何方法来执行此操作 --- 我似乎没有收到任何通知表明发生了什么事:没有意图,没有 Java 异常,什么都没有。如果套接字无效,我希望接收会抛出 IOException,但这似乎没有发生。
任何人都可以就(a)实际发生的事情以及(b)如何解决它提供任何见解吗?现在我最好的猜测是每隔十秒左右不断地销毁和重新创建套接字,这只是邪恶的。