问题描述
我正在开发一个聊天项目,以服务iOS,Android,WindowsPhone应用程序,
我有点问题:服务器套接字如何检测断开连接的客户端???,
说明:
当我使用Java控制台时,我单击Windows的X按钮,然后服务器套接字检测到客户端断开连接,并在用户在线列表中将其删除
当我在手机应用程序上使用客户端时,我关闭了Wifi和3G来断开服务器套接字,但服务器套接字未检测到断开的客户端。
如何解决这个问题呢??
P / S:我不能使用clientSocket.setSoTimeout(),因为客户端始终连接到服务器套接字,它仅在网络问题时断开连接。
1楼
如果我正确理解了您的问题,那么您正在问如何知道服务器与客户端之间的连接何时断开。
您可以使用一个维护线程,该线程将继续从List<ServerSocket>
检查,它可以调用serverSocketObj.isClosed()
,如果找到,则可以从列表中删除该ServerSocket
项。
您可以使用一个布尔值字段在ThreadPoolExecutor
管理正在运行的任务(客户端聊天服务),在此它将检查连接是否仍然有效。
该维护线程可以适当地设置此字段。