Android - 如何知道TCP连接是否仍然打开

时间:2014-01-29 17:45:03

标签: android sockets

我正在做一个与TCP服务器通信的应用程序。我的工作基于以下示例http://myandroidsolutions.funcode.ro/2013/03/31/android-tcp-connection-enhanced/

现在我正在研究如何验证客户端和服务器之间是否存在连接。 mBufferOut.checkError()仅在2/3次尝试后发出错误。我需要知道我的消息是否已发送。

谢谢

2 个答案:

答案 0 :(得分:0)

在网络通信中,您永远无法确定远程方何时(或是否)完全,部分或完全接收到该消息。

如果连接断开,那么您肯定知道该消息未被完整接收。

但是如果您需要及时确认,服务器应该发送一些确认消息。但是,您的应用程序协议需要支持此功能。

同样有效的是知道连接是“up”还是“down”:TCP在空闲时不会交换任何数据包,除非你激活keep-alive(通常不推荐)。可能会发生该方认为它有连接,只发送消息然后失败(可能是因为路由器在连接空闲时被重置)。

答案 1 :(得分:0)

要解决这个问题,我们需要查看readLine()的返回值。如果它返回null,那么我们的tcp连接已关闭。