㈠ 服务器怎么判断心跳包
用sendUrgentData这个来判断服务端是否异常关闭
想实现自动连接服务端,如果用
socket=newSocket("192.168.1.4",1821);
socket.connect();
只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
心跳的意思就是每隔一段时间,客户端给服务器发一段消息:
1、客户端:服务器,我还活着,你死了没
2、服务器:客户端,我知道你还活着这个信息,我已经记录下来了,同时告诉你我也还活着
更多问题到问题求助专区http://bbs.hounwang.com/
㈡ 服务器搭建中,心跳线的作用
心跳线是用于连接A、B两台服务器间的网线。在这两台服务器A、B中,A为工作机,B为备份机,它们之间通过一根心跳线来连接。一般在服务器上都配有两块网卡,其中一块专门用于两台服务器(节点)间的通讯。安装在服务器上的软件通过心跳线来实时监测对方的运行状态。一旦正在工作的主机A因为各种硬件故障,如电源失效、主要部件失效或者启动盘失效等导致系统发生故障,心跳线会反映给互为备份的另外一台主机,主机B可以立即投入工作。这样可以在最大限度上保证网络的正常运行。这也称为“心跳检测”。心跳线主要利用一条RS-233检测链路来完成,采用Ping方式检测验证系统Down机检测的准确性。
㈢ 什么是TCP/IP通讯中的心跳包
心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
心跳包在GPRS通信和CDMA通信的应用方面使用非常广泛。数据网关会定时清理没有数据的路由,心跳包通常设定在30-40秒之间。
所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
(3)什么叫心跳服务器扩展阅读:
心跳包作用:
在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项。系统默认是设置的是2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。
心跳包一般来说都是在逻辑层发送空的包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了。只需要send或者recv一下,如果结果为零,则为掉线。
但是,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。
㈣ 什么是心跳机制
心跳包,通常是客户端每隔一小段时间向服务器发送的一个数据包,通知服务器自己仍然在线,并传输一些可能有必要的数据。因按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。事实上为了保持长连接,至于包的内容,是没有特别规定的,不过一般都是很小的包,或者只是包含包头的一个空包。
在TCP协议的机制里面,本身是存在有心跳包机制的,也就是TCP协议中的SO_KEEPALIVE,系统默认是设置2小时的心跳频率。需要用要用setsockopt将SOL_SOCKET.SO_KEEPALIVE设置为1才是打开,并且可以设置三个参数tcp_keepalive_time/tcp_keepalive_probes/tcp_keepalive_intvl,分别表示连接闲置多久开始发keepalive的ACK包、发几个ACK包不回复才当对方死了、两个ACK包之间间隔多长。
TCP协议会向对方发一个带有ACK标志的空数据包(KeepAlive探针),对方在收到ACK包以后,如果连接一切正常,应该回复一个ACK;如果连接出现错误了(例如对方重启了,连接状态丢失),则应当回复一个RST;如果对方没有回复,服务器每隔多少时间再发ACK,如果连续多个包都被无视了,说明连接被断开了。
“心跳检测包”是属于TCP协议底层的检测机制,上位机软件只是解析显示网口的有用数据包,收到心跳包报文属于TCP协议层的数据,一般软件不会将它直接在应用层显示出来,所以看不到。以太网中的“心跳包”可以通过“以太网抓包软件”分析TCP/IP协议层的数据流看到。报文名称”TCP Keep-Alive”。
一些比较可靠的以太网转串口模块,都有心跳包的检测,比如致远电子的ZNE-100TL模块,配置“心跳包检测”间隔时间设为“10”秒,使用一款”wireshark”的抓包软件来实际查看下TCP/IP协议层“心跳包”数据。