如何判断 ServerSocket 客户端是否断开连接?

How to tell if ServerSocket client disconnected?

我的服务器类型应用程序侦听 ServerSocket 并接受来自客户端的连接。然后我可以很好地读写它。我不知道的是如何检测客户端是否断开连接。 MySocket.isConnected() 函数继续返回 true。同样 isClosed() 总是 returns false.

我在其他地方读到, 的判断方法是尝试读取或写入它并检测异常。 这是唯一的方法吗?

我找到了解决问题的好办法。这是我所做的:

  • 我放弃了我的 Android 版本并将我的服务器移植到 Windows。

  • 在我的服务器应用程序中,我使用 CreateEvent().

  • 创建了两个事件对象
  • 我生成了两个线程,每个线程一个,使用 CreateThread()

  • 每个线程在其套接字上发出阻塞读取。

  • 读取成功,每个线程处理接收到的数据。在读取 failure(例如断开连接)时,我将其事件设置为使用 SetEvent().

  • 发出信号
  • 在服务器应用程序中,我使用 WaitForMultipleObjects() 等待这两个事件。如果任一事件触发,我将对断开连接采取适当的适当操作(现在,我只是退出)。

也许不是我原来问题的答案,但它满足了我的要求。