我在Android上有一个服务,用于监听并响应它通过多播接收到的数据包。Android多播套接字停止侦听
这在大多数情况下都能正常工作,但不幸的是,我发现每隔一段时间它就会停止接收数据包。该线程在对MulticastSocket.receive()的调用中保持阻塞状态,但没有任何结果。我一直在试图找出触发此事的原因,并且发现无线关闭和重新打开无线连接或更改无线连接都可以实现。
为了成功地继续侦听我的数据包,我需要关闭MulticastSocket并重新创建它。但是,我还没有找到任何方法来做这件事---我似乎没有得到任何事情发生的通知:没有意图,没有Java异常,什么都没有。如果套接字变得无效,我希望receive会抛出一个IOException,但这似乎没有发生。
任何人都可以提供任何见解(a)实际发生了什么,和(b)如何解决它?现在我最好的猜测是每隔十秒钟左右不断地破坏和重新创建套接字,这就是邪恶。
是的,它做到了。但是,事实证明,当连接消失时,您的多点传送锁被破坏(长时间延迟是我在重新编写代码之前三次重新编写代码)。所以,每次连接回来时都必须重新获取锁。 – 2010-10-26 11:04:12