一、什么是心跳检测判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息。如果服务端几分钟内没有收到客户端信息则视客户端断开。比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。
发包方可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。
一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是相反。
二、关于Send函数的返回值
我们知道当客户端以优雅的方式断开TCP连接后,服务器使用Send函数发包,得到的返回值为0(说明TCP连接已断开)。然而,SEND函数的成功返回只能表示发送数据已经进入了SOCKET内核的发送队列,不一定就已经在线上或者已经被成功接收了。这可能是因为send只是往发送缓冲区拷贝数据, 刚开始缓冲区还未满,所以不会有错误发生, 只有等到相当一段长的时间后, send的返回值才会为-1。
三、定时Ping
如果服务器不能进行心跳检测的应答。可以采用定时Ping某服务器来检测TCP连接是否断开,如新浪(必须允许Ping的服务器)。PING是向远程主机发送一个ICMP包,如果给定时间内没有接收到回应就认为是超时,如果收到回应则分析接收到的ICMP包,得到TTL、类型以及用时。
不过Ping包有32字节,如果是无线连接,有时需要考虑流量问题。
四、使用TCP存活定时器
分享到:
相关推荐
基于MFC的TCP心跳检测包,一款最基本的心跳检测包程序,里面的IP地址是写死的,可以在代码里修改,还是很方便的
由于移动设备的网络的复杂性,经常会出现网络断开,如果没有心跳包的检测,客户端只会在需要发送数据的时候才知道自己已经断线,会延误,甚至丢失服务器发送过来的数据。一下简单建立一个带有心跳检测的SocketDemo。
简单的Android Socket 编程实例,有单独的客户端及服务器端源码。两台Android设备同时连接同一个WiFi...代码实现心跳检测,当服务器断网或是结束进程,客户端可重新连接(重连部分自己实现);代码有点凌乱,仅供参考!
vc tcp socket 1台服务器连3台客户机_下线及时通知(即心跳保持也叫心跳检测技术)
java语言 建立网络通讯长连接示例(心跳测试)
实时检测网络的通断情况,以实现网络的无缝重连
Android Socket连接,包含心跳检测,断线重连,数据发送等等 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78094909
主要介绍了C#使用Socket实现心跳的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
心跳检测 断线重连 粘包组包 粘包 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯存在粘包的主要原因是TCP是以流的方式来处理数据,所以就会引发一次接收的数据无法满足消息的需要,...
代码调试成功,适用于Linux环境,可实现服务器与客户端定时交互,判断网络是否掉线,定时间隔可修改客户端itemval相关参数
3、socket功能类库模块(其他项目也可以引用),socket类库模块功能齐全,只需调用其中方法即可,复用性较强,代码注释详细,实现了心跳,解决了粘包问题,异步发送接收数据,等等,bin目录下右运行日志方便查找程序...
C# socket tcp/ip 心跳检测 判系统是否还在正常运行
TCP存活可以通过修改系统设置或者在tcp应用代码里面设置,本demo的是在tcp应用里面设置。原理是:对于一个已经建立的tcp连接。...运行本测试代码,然后拔掉主从之间的网线,主和从都可以检测到tcp断开。
java socket client 断线重连的简单实现 有什么意见可以提哦
心跳检测各类应用服务器(如Tomcat,Jetty),WEB服务器(如 Apache,Nginx), Socket服务器(TCP/UDP协议)的SpringBoot应用程序.
其基本原理是检测对应的socket连接上数据的收发是否正常,如果一段时间内没有收发数据,则向对端发送一个心跳检测包,如果一段时间内没有回应则认为心跳超时,即认为对端可能异常crash了。 rabbitmq也不例外,heat
socke tcp心跳检测源码
开发环境Vs2012,语言C# 内容:TCP心跳服务器、数据服务器登录和通讯框架。XP、win7 32位、64位系统测试通过。 详细描述: 该框架源于CSDN的心跳服务器框架,对其做了修改,增加了数据服务器部分及短连接请求部分。 ...
技术:Socket TcpClient TcpListener NetworkStream BinaryReader/BinaryWriter 服务器启用监听: 接受客户端的连接并通知其他已在线的客户端。服务器有自动检测客户端在线状态,并通知客户端,维护客户端。服务器...
技术:Socket TcpClient TcpListener NetworkStream BinaryReader/BinaryWriter 服务器启用监听: 接受客户端的连接并通知其他已在线的客户端。服务器有自动检测客户端在线状态,并通知客户端,维护客户端。服务器...