当客户端与服务器断开连接时检测a



如何检测客户端何时与使用ServerSocket和Socket的服务器断开连接?

我有对象I/O流。当客户端断开连接时,我希望服务器减少当前正在运行的连接并显示一条消息。这必须在断开连接的确切时间或多或少发生。你怎么得到这个的?

在这种情况下,当相应的读操作返回-1(对于raw read()调用)或null(对于readLine()调用)或抛出EOFException(对于所有其他readXXX()调用)时,您可以检测到流结束。

套接字方法在关闭的套接字上执行时将导致SocketException: socket closed。这表明您的程序有错误。

有一个解决这个问题的方法是在两个连接的实体之间定期交换心跳,大多数电信系统使用这种方法来响应断开。

如果你试着读或写一些东西,你就会知道。通过执行read()来检测此问题,该方法将返回-1 (EOF)或引发SocketException ("connection reset")。

最新更新