我想知道在客户端检查使用AndroidAsync库打开的TCP套接字不再可用的正确方法是什么?这是(纯TCP,非AndroidAsync)服务器不启动显式关闭套接字(因此不调用ClosedCallback)。例如,当服务器已经冷启动。AndroidAsync TCP - 使用写入功能检测套接字的正确方法不再可用?
似乎DataCallback仅在服务器发回数据并且不能用于接收错误消息时才可用。
在我看来也是
Util.writeAll(socket, (byte[]) payload.array(), new CompletedCallback()
{
@Override
public void onCompleted(Exception ex)
{
if (ex != null)
{
Log.e(TAG, "write failed with ex message= " + ex.getMessage());
throw new RuntimeException(ex);
}
}
});
不要么抛出异常。
所以在这一点上,我不知道如何检测套接字已不再可用,即使客户端定期向其写入数据。
不幸的是,服务器不是一个AndroidAsync服务器,不会关闭连接,以便可以调用回调。 – Objectist
对不起,你是什么意思的非AndroidAsync服务器? 即使使用node.js,甚至是自定义的C++ tcp服务器,当服务器死亡时,我仍然可以在客户端上得到最终和关闭的回调,我认为它与AndroidAsync没有任何关系,它更像是一个tcp标准 – behelit
在我的环境中,除了关闭服务器(正常)之外,还有其他用例,当连接从客户端和服务器的角度来看都不再有效时。由于服务器不是由我实施/控制的AndroidAsync服务器,必须纯粹在客户端发现。 – Objectist