如何判断 ServerSocket 客户端是否断开连接?
How to tell if ServerSocket client disconnected?
我的服务器类型应用程序侦听 ServerSocket 并接受来自客户端的连接。然后我可以很好地读写它。我不知道的是如何检测客户端是否断开连接。 MySocket.isConnected() 函数继续返回 true。同样 isClosed() 总是 returns false.
我在其他地方读到,仅 的判断方法是尝试读取或写入它并检测异常。 这是唯一的方法吗?
我找到了解决问题的好办法。这是我所做的:
我放弃了我的 Android 版本并将我的服务器移植到 Windows。
在我的服务器应用程序中,我使用 CreateEvent().
创建了两个事件对象
我生成了两个线程,每个线程一个,使用 CreateThread()。
每个线程在其套接字上发出阻塞读取。
读取成功,每个线程处理接收到的数据。在读取 failure(例如断开连接)时,我将其事件设置为使用 SetEvent().
发出信号
在服务器应用程序中,我使用 WaitForMultipleObjects() 等待这两个事件。如果任一事件触发,我将对断开连接采取适当的适当操作(现在,我只是退出)。
也许不是我原来问题的答案,但它满足了我的要求。
我的服务器类型应用程序侦听 ServerSocket 并接受来自客户端的连接。然后我可以很好地读写它。我不知道的是如何检测客户端是否断开连接。 MySocket.isConnected() 函数继续返回 true。同样 isClosed() 总是 returns false.
我在其他地方读到,仅 的判断方法是尝试读取或写入它并检测异常。 这是唯一的方法吗?
我找到了解决问题的好办法。这是我所做的:
我放弃了我的 Android 版本并将我的服务器移植到 Windows。
在我的服务器应用程序中,我使用 CreateEvent().
创建了两个事件对象
我生成了两个线程,每个线程一个,使用 CreateThread()。
每个线程在其套接字上发出阻塞读取。
读取成功,每个线程处理接收到的数据。在读取 failure(例如断开连接)时,我将其事件设置为使用 SetEvent().
发出信号
在服务器应用程序中,我使用 WaitForMultipleObjects() 等待这两个事件。如果任一事件触发,我将对断开连接采取适当的适当操作(现在,我只是退出)。
也许不是我原来问题的答案,但它满足了我的要求。