服务器如何判断客户端非正常掉线-心跳连接
2016-11-21 13:09
423 查看
服务器如何判断客户端非正常掉线-心跳连接
心跳:如果不主动关闭socket的话,系统不会自动关闭的,除非当前进程挂掉了,操作系统把占用的socket回收了才会关闭。为什么需要心跳连接主要是判断当前连接是否是有效的、可被使用的。在实际应用中假设一段时间没有数据传输时候理论上说应该连接是没有问题的,但是网络复杂,中途出现问题也是常见的,网线被掐断了、对方进程挂掉了、频繁丢包等,这时候TCP连接是不可使用的,但是对于应用层并不知道,如果需知道网络情况则要很复杂的超时进行了解,TCP从底层就实现了这样的功能。心跳机制是TCP在一段时间间隔后发送确定连接端是否还存在,如果存在的话就会回传一个包确定网络有效,如果心跳包有问题,则通知上层应用当前网络有问题了。实现:
[java] view
plain copy
public void heartCheck(final ClientSocket socket){
//心跳连接(检查断链) 服务器断线重连
new Thread(new Runnable() {
public void run() {
while (true) {
if(socket.isConnectStatus()==false)break;
try {
socket.sendHeartCheck();//socket.sendUrgentData(0xFF);
//System.out.println("目前是正常的!");
Thread.sleep(10 * 1000);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("心跳检测到客户端"+socket.getServer_Id()+"掉线");
socket.destroy();
break;
} // 发送心跳包
catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}
}).start();
}
相关文章推荐
- 服务器如何判断客户端非正常掉线-心跳连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- 如何判断本客户端 SOCKET 与服务器 之间的连接状态.
- WCF心跳判断服务端及客户端是否掉线并实现重连接
- 客户端怎么判断Socket连接已与服务器断开
- 如何使用MSTSC命令远程连接服务器或客户端
- tcp 服务端如何判断客户端断开连接
- 在完成端口IOCP模型判断客户端是否已关闭连接(掉线)
- oracle10客户端PL/SQL Developer如何连接远程服务器上的oracle数据库
- 什么是socket?什么是socket的长、短连接?java如何简单实现socket客户端和服务器?
- iocp网络通信之如何判断客户端连接断开
- 客户端PL/SQL如何连接oracle服务器