0

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

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

4

2 回答 2

1

如果您尝试阅读或写一些东西,那么您就会了解。通过执行 read() 来检测这一点,这将返回 -1 (EOF) 或引发 SocketException(“连接重置”)。

于 2013-05-25T13:00:24.537 回答
1

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

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

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

于 2013-05-25T13:04:24.533 回答