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