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