我正在用 Java 设计一个客户端服务器聊天应用程序,它在它们之间使用 TCP 连接。当客户端强制关闭时,我无法弄清楚如何在服务器端进行检测。我需要这个,因为我正在维护一个在线客户端列表,并且当他强行关闭连接时我需要从列表中删除用户。
任何帮助将不胜感激。
谢谢
塔拉辛格
我正在用 Java 设计一个客户端服务器聊天应用程序,它在它们之间使用 TCP 连接。当客户端强制关闭时,我无法弄清楚如何在服务器端进行检测。我需要这个,因为我正在维护一个在线客户端列表,并且当他强行关闭连接时我需要从列表中删除用户。
任何帮助将不胜感激。
谢谢
塔拉辛格
及时接收断开连接通知的一种方法是尝试定期发送一小段信息。然后,您将知道的客户端断开连接的最新消息最多是您的时间间隔。人们称之为心跳。
假设你的服务器使用的是java.net.Socket,你可以不定时的查询socket,它提供了方法isClosed()和isConnected()。
这取决于您如何处理套接字 I/O
例如,如果您使用选择器 (java.nio) 在一组套接字上执行非阻塞 I/O,您将在下次调用 select() 时发现任何断开连接。
也许如果你用你如何处理套接字来更新你的问题?