如何判断socket客户端是否已经断开连接?(100分)

  • 主题发起人 主题发起人 阿魁
  • 开始时间 开始时间

阿魁

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个ServerSocket,接收客户端Socket连接后,不断的向客户端打印日志信息,从不从客户端接收信息。
问题是:我如何在ServerSocket判断客户端Socket是否已经断开连接了?
我试验的情况是:客户端通过telnet连接到服务器,服务器开始向客户端打印信息,
此时,如果关闭telnet,服务器端在获取该socket的输出流后,不会出错,而且向
该输出流打印信息时,仍然不会出错。
请问该如何处理,使得客户端断开连接时,服务器端立刻就能知道?
 
ServerSocket的onClientDisconnect事件不就是客户端断开时触发吗?
 
onClientDisconnect事件!
 
如果是正常的断开,如调用了close、shutdown等,会触发onclientdisconnect事件,但
如果是非正常断开,如死机、拔网线等,如果没有握手信息交互,至少要2个小时才能知
道。想立刻知道就必须采用握手信息交互,简单说就是定时发送一个信息,对端收到后会一个消
息,当没有正常的收发时,就可以认为是断开了。
 
还有一种方法,你的socket通信方式采用组塞方式,当系统没有反映时,就可以返回client断开的信息
 
onClientDisconnect事件?
怎么在java.net.ServerSocket里没有找到?
 
后退
顶部