我正在开发一个使用Android平板电脑作为自定义Linux机箱用户界面的应用程序。这两个设备通过TCP连接(Android是客户端,盒子是服务器)。每台服务器只有1个客户端。此外,我使用此示例来构建我的TCP客户端代码:
http://content.gpwiki.org/index.php/Java:Tutorials:Simple_TCP_Networking
我使用相同的编写器和读者,但使用不同的方法来初始化连接(AsyncTask)。
Android和远程系统之间的TCP交互始终是:
1) The Android sends a command to do something.
2) The Server does it and sends a reply.
我一直在处理TCP套接字超时(5秒内)并抛出IOException的情况,因为丢失了链接,于是我的软件开始重新建立与服务器的通信。 (5秒比完成任何现有系统命令BTW所需的时间长)
有几个问题:
1) Establishing (and Re-establishing) WIFI communications to my server takes
a significant amount of time. It's not a big deal at start up, but running
through it again definitely doesn't sit well with the users.
2) I've seen PLENTY of examples where the command was sent, the server executed
it, and sent a reply, but for some reason, the reply just doesn't show up in
my StreamReader.
据我所知,服务器或链接没有任何问题,但我的Android没有收到响应 - 我已经确认我的服务器肯定是在发送它。
任何人都可以推荐更多“防弹”TCP连接概念?也许我可能会忽略少数这些错误(假设有一种方法可以在它们之后进行清理......是否有?)也许有更可靠的方法来写入和读取套接字?
任何建议都将被感激地接受并采取行动。谢谢, R上。
答案 0 :(得分:0)
显然,答案似乎是Jens建议的。干得好,先生(我假设)...... 您可以在Android设置菜单中访问WiFi睡眠设置 - 但这显然没有帮助。
另一方面,获取WiFi锁(使用WifiManager.createWifiLock(“Tag”);获得一个)似乎很好地完成了这个技巧。
在有人要求之前,我根本没有关于锁定或解锁Wifi行为的信息。我无法告诉你有什么可能说服你的WiFi在你的应用程序中工作。所有人都可以说是锁定,并拧紧电池......
R上。