android-TCP客户端/服务器与多播广播
作者:互联网
我正在开发一种在20-30台android设备(特定于装有android honeycomb / ICS OS的平板电脑)上运行的无市场应用程序,可在本地WIFI网络上维持1-2小时的连接,并且需要交换数据(代表命令的简单对象).
在大多数情况下,一个特定的平板电脑的行为类似于发送命令的服务器,而其他设备(如客户端)则接收命令,但是“客户端”有时也会向“服务器”发送命令.
解决此通信需求的方法-我使用开放源代码一段时间
封装TCP客户端/服务器协议的库,称为-Kryonet.
我发现它非常易于使用,并且基本上可以完成工作,尽管有时有时“不稳定”-造成很多断开连接.我无法承受这种断开连接,因为它损害了整个流程和用例,导致客户端丢失命令.
我正在执行一些恢复逻辑,这些逻辑将重新连接客户端并将其丢失的内容发送给他们,但这对于用例而言还不够好.
最近,我听说了多播广播协议,甚至发现了一个开源库调用-JGroups,它们以最佳方式实现了该协议,并公开了易于使用的接口.仍然没有尝试过,但是从一个认识的人那里得到了建议,说对于我的目的,TCP客户端/服务器应该更好.
>应该采用哪种最佳方法来实现我描述的行为? (不一定是我建议的两个之一)
TIA
解决方法:
尽管JGroups承诺会为您的情况提供更好的解决方案,但您可能还需要进行更多的试验来确定断开连接的原因.由于您的客户端和服务器都是平板电脑,因此还有其他一些无关的原因:
1)如果服务中未维护连接,则默认情况下它们将极为不可靠. (有关Android中销毁单例的信息,请参见this question)
2)如果套接字尚未设置为“ keepalive”,则它们将在任意秒数后超时.
3)您使用的设备在进入睡眠状态时可能会关闭某些持久性连接.
4)平板电脑可能正在退出WiFi范围,并切换到移动网络.
在许多台式机上尝试代码的网络部分,以确定问题是否出在Kryonet或您的代码上,或者问题是否出在Android上.
标签:tcp,android-wifi,local-network,android,multicast 来源: https://codeday.me/bug/20191201/2077784.html