断开java中的客户端套接字

时间:2015-10-19 10:06:39

标签: java android ios sockets windows-phone

我正在开发一个聊天项目来服务iOS,Android,WindowsPhone应用程序,

我有点问题: 服务器套接字如何检测断开连接的客户端???,

解释:

  1. 当我使用java控制台时,我点击Windows的X按钮,然后服务器套接字检测到断开连接的客户端,我将其删除在用户在线列表中

  2. 当我在手机应用程序上使用客户端时,我关闭了Wifi和3G以断开服务器套接字,但服务器套接字未检测到已断开连接的客户端。

  3. 如何解决这个问题??

    P / S:我不能使用clientSocket.setSoTimeout(),因为客户端总是连接到服务器套接字,它只在网络问题时断开连接。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您就会问如何知道服务器和客户端之间的连接何时断开连接。
您可以使用一个维护线程来继续List<ServerSocket>进行检查,它可以调用serverSocketObj.isClosed(),如果它发现它可以从列表中删除ServerSocket项。
您可以使用一个布尔字段来管理ThreadPoolExecutor中的正在运行的任务(客户端聊天服务),它将检查连接是否仍处于活动状态。该维护线程可以适当地设置该字段。