我正在开发一个应用程序,它使用 Android 平板电脑作为自定义 Linux 机器的用户界面。两台设备通过 TCP 连接(Android 为 Client,box 为 Server)。每台服务器只有每 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 秒比完成任何现有系统命令所需的时间长得多,顺便说一句)
有几个问题:
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。