其他分享
首页 > 其他分享> > Android多播套接字停止监听

Android多播套接字停止监听

作者:互联网

我在Android上有一个服务,可以侦听并响应通过多播接收到的数据包.

这在大多数情况下都有效,但是不幸的是,我发现它会不时地停止接收数据包.该线程在对MulticastSocket.receive()的调用上仍然处于阻塞状态,但是什么也没有发生.我一直在缓慢地寻找引发此问题的原因,并且发现关闭无线设备然后重新打开,或者更改无线连接都可以做到这一点.

为了成功继续侦听我的数据包,我需要关闭MulticastSocket并再次重新创建它.但是,我还没有找到实现此目的的任何方法—我似乎没有收到任何已发生事情的通知:没有意图,没有Java异常,什么也没有.我希望如果套接字变得无效,则接收会引发IOException,但这似乎没有发生.

任何人都可以提供有关(a)实际发生的情况以及(b)如何解决它的任何见解?现在,我最好的猜测是每隔十秒左右不断销毁并重新创建套接字,这简直是邪恶的.

解决方法:

注意:在2010年提出此问题时,此答案是有意义的,今天可能已不相关.

我认为更改无线网络几乎类似于禁用和重新启用网络(可能使用不同的IP和路由),因此事情不会中断就不足为奇了.

也许注册网络信息的更改会给您所需的警告?

http://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION

和相关页面

标签:sockets,android,multicast,multicastsocket
来源: https://codeday.me/bug/20191023/1915424.html