0

我正在开发一个应用程序,它使用 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。

4

1 回答 1

0

显然,答案似乎是 Jens 所建议的。做得很好,先生(我想)...您可以在 Android 设置菜单中访问 WiFi 睡眠设置——但这显然没有帮助。

另一方面,获取 WiFi 锁(使用 WifiManager.createWifiLock ("Tag"); 获取一个)似乎已经很好地完成了这个技巧。

不过,在有人问之前,我根本没有关于锁定或解锁 Wifi 行为的信息。我无法告诉您什么可能会说服您的 WiFi 在您的应用程序中工作或不工作。只能说拿到锁,然后拧电池……

R。

于 2012-04-20T17:01:50.347 回答