1

我想区分客户端套接字上服务器连接关闭的异常,例如服务器套接字是否由于空闲超时而关闭,该原因必须在客户端生成为空闲超时异常。同样对于连接失败如连接失败异常等等。请帮我解决这个问题。提前致谢。

4

2 回答 2

1

最好的方法是让服务器向您发送一条消息,说明它关闭连接的原因。服务器不会关闭默认处于空闲状态的连接。

于 2012-09-02T17:37:13.723 回答
1

如果服务器正确关闭了套接字,那么客户端只有一个可能的异常,而不是客户端必须捕获和找出的一系列不同的异常。只有一个 EOS 指示:read() 返回 -1,readLine() 返回 null,readXXX() 对任何其他 X 抛出 EOFException。

如果由于网络故障而断开连接,则客户端可能会收到带有文本“连接重置”的 IOException。如果连接保持正常但服务器没有发送数据并且客户端有读取超时,客户端将收到 SocketTimeoutException。这些都不意味着服务器已经关闭了连接(尽管服务器可能会导致连接重置,我不会在这里记录)。

如果您需要知道服务器关闭套接字的原因,它必须通过消息告诉您。

于 2012-09-02T21:17:29.377 回答