我正在开发一个聊天项目来服务iOS,Android,WindowsPhone应用程序,
我有点问题: 服务器套接字如何检测断开连接的客户端???,
解释:
当我使用java控制台时,我点击Windows的X按钮,然后服务器套接字检测到断开连接的客户端,我将其删除在用户在线列表中
当我在手机应用程序上使用客户端时,我关闭了Wifi和3G以断开服务器套接字,但服务器套接字未检测到已断开连接的客户端。
如何解决这个问题??
P / S:我不能使用clientSocket.setSoTimeout(),因为客户端总是连接到服务器套接字,它只在网络问题时断开连接。
答案 0 :(得分:0)
如果我正确理解了您的问题,那么您就会问如何知道服务器和客户端之间的连接何时断开连接。
您可以使用一个维护线程来继续List<ServerSocket>
进行检查,它可以调用serverSocketObj.isClosed()
,如果它发现它可以从列表中删除ServerSocket
项。
您可以使用一个布尔字段来管理ThreadPoolExecutor
中的正在运行的任务(客户端聊天服务),它将检查连接是否仍处于活动状态。该维护线程可以适当地设置该字段。