【问题标题】:Disconnect client socket in java在java中断开客户端套接字
【发布时间】:2015-10-19 10:06:39
【问题描述】:

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

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

解释:

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

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

如何解决这个问题??

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

【问题讨论】:

    标签: java android ios sockets windows-phone


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-12
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多