gpt4 book ai didi

android - TCP 客户端/服务器与多播广播

转载 作者:可可西里 更新时间:2023-11-01 02:34:04 24 4
gpt4 key购买 nike

我正在开发一个非市场应用程序,它在 20-30 台安卓设备上运行(目标特定于带有安卓蜂窝/ICS 操作系统的平板电脑),通过本地 WIFI 网络保持连接 1-2 小时,并且需要在它们之间交换数据(表示命令的简单对象)。

大多数情况下,一个特定的平板电脑就像发送命令的服务器,而其他设备就像接收命令的客户端,但“客户端”有时也会向“服务器”发送命令。

作为这种通信需求的解决方案——我使用了一段时间的开源
封装了 TCP 客户端/服务器协议(protocol)的库,称为 - Kryonet。我发现它非常易于使用,并且基本上可以完成工作,尽管它有时“不稳定” - 会出现很多断开连接的情况。 我承受不起这种断开连接,它破坏了整个流程和用例,导致客户端丢失命令。

我正在做一些恢复逻辑,重新连接客户端并向他们发送他们错过的内容,但这对于用例来说还不够好。

最近我听说了多播广播协议(protocol),甚至发现了一个开源库调用——JGroups,它优化地实现了这个协议(protocol),并公开了简单易用的接口(interface)。仍然没有尝试,但是从知道的人那里得到了建议,说对于我的目的来说,TCP 客户端/服务器应该更好。

  • 实现我描述的行为的最佳方法是什么? (不一定是我建议的两个之一)

TIA

最佳答案

尽管 JGroups 有望成为适合您的情况的更好解决方案,但您可能需要进行更多试验以确定发生断开连接的原因。由于您的客户端和服务器都是平板电脑,因此还有一些其他无关的原因:

1) 如果连接没有在 Service 中维护,那么默认情况下它们将非常不可靠。 (参见 this question 关于在 Android 中销毁单例)

2) 如果套接字未设置为“保持 Activity ”,则它们将在任意秒数后超时。

3) 您正在使用的设备在进入休眠状态时可能会关闭一些持久连接。

4) 平板电脑可能正在退出 WiFi 范围,并切换到移动网络。

在许多桌面计算机上尝试您代码的网络部分,以确定问题是出在 Kryonet 还是您的代码上,或者问题是否出在 Android 上。

关于android - TCP 客户端/服务器与多播广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com