1、为什么在服务端设计当中需要考虑心跳
的检测,清除死连接,即使在没有数据来往的时候,TCP也就可以(在启动TCP这个功能的前提下)自动发包检测是否连接正常,这个不需要我们处理。
服务端设计心跳包的目的:
探知对端应用是否存活,服务端客户端都可以发心跳包,一般都是客户端发送心跳包,服务端用于判断客户端是否在线,从而对服务端内存缓存数据进行清理(玩家下线等);问题在于,通过TCP四次握手断开的设定,我们也是可以通过Socket的read方法来判断TCP连接是否断开,从而做出相应的清理内存动作,那么为什么我们还需要使用客户端发送心跳包来判断呢?
第一种判断客户端是否在线策略:
直接监控TCP传输协议的返回值,通过返回值处理应用层的存活判断
比如在C++当中
使用poll的IO复用方法时:
if(fds[i].revents & POLLERR)
if(fds[i].events & POLLDHUP)
通过上述判断可以探知TCP连接的正确性从而在服务器也关闭对应的连接
2、服务器搭建中,心跳线的作用
心跳线是用于连接A、B两台服务器间的网线。在这两台服务器A、B中,A为工作机,B为备份机,它们之间通过一根心跳线来连接。一般在服务器上都配有两块网卡,其中一块专门用于两台服务器(节点)间的通讯。安装在服务器上的软件通过心跳线来实时监测对方的运行状态。一旦正在工作的主机A因为各种硬件故障,如电源失效、主要部件失效或者启动盘失效等导致系统发生故障,心跳线会反映给互为备份的另外一台主机,主机B可以立即投入工作。这样可以在最大限度上保证网络的正常运行。这也称为“心跳检测”。心跳线主要利用一条RS-233检测链路来完成,采用Ping方式检测验证系统Down机检测的准确性。
3、SQL服务管理器与服务器心跳线
||US OK--> IBM X3500怎么现实双机热备!_百度知道 var IKFromImport=false; | | G("log_in").src=" http://passport.baidu.com/?login&tpl=ik&u"+escape(location.href); 知道 | function ask(fn) (function()Fe.on(window,"resize",A);A();setTimeout(A,100)})(); if(!g_f_js) if (typeof(cf_h)=="function") var IknowPageModify=false;var UnloadConfirm=}};UnloadConfirm.clear=function()};UnloadConfirm.set();if(!G)return A}}function ctlSubmit(A)}function lockButton(A),3000)}function cReply(A)if(A=="no")}function fixReply(A)function showcpro(A)function ga(B,A)}}elset=h.id}if(t==a||p==a||r==a)window.open(G(a).href,"_blank")}}function ss(A)function cs()var query=(function()D.onsubmit=function()document.forms.ftop.appendChild(E(query.isChanged()));return true}}function A()return B!=document.forms.ftop.word.value}return})();function statFunc(A)function voteAnswer(A)function formSubmit(B,A),B),A||"deal")}; var url = escape(location.href); IknowLogParams["page"]="ikqb"; >
已解决
IBM X3500怎么现实双机热备! 悬赏分:0 - 提问时间2008-7-14 13:222台IBM X3500装WIN 2003企业版,SQL 2005
是一个医院的用户。
用户要求,当一个服务器出现问题,另一个服务器马上起来提供服
4、java如何实现客户端与服务端的心跳机制
socket.sendUrgentData(0xFF)主要是这个
socket是这样发送心跳的,参考一下,这是我写过的部分代码,专门开一个线程发送心跳
new Thread(new Runnable() {
@Override
public void run() {
while(socket!=null && !socket.isClosed()){
try {
socket.sendUrgentData(0xFF);
} catch (IOException e) {
e.printStackTrace();
reconnect();
}
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
log.info("connection is missing!"+Calendar.getInstance().getTime().getTime());
}
}).start();
5、服务器怎么判断心跳包?
用sendUrgentData这个来判断服务端是否异常关闭
想实现自动连接服务端,如果用
socket = new Socket("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/
6、心跳服务器连接失败是什么原因
解决方法:
点击左下角开始按钮(或者按windows键)弹出开始菜单。
在搜索中输入"计算机管理",或者直接对着桌面的"计算机"点击邮件,在弹出的菜单里点击"管理"
系统搜索结果里找到"计算机管理",单击它打开窗口,在窗口的左边展开"服务与应用程序"的菜单并且点击"服务",
在右边的结果里找到"IP helper",(windows XP 是"IPv6 Helper Service")。 点击"IP helper",(windows XP 是"IPv6 Helper Service")打开上图窗口,依次把启动类型换成"禁用",把服务状态换为"停止",最后点确定按钮。
重启计算机以便设置生效
7、路由器如何向服务器发送心跳包
这个你要和服务器端协商接口 然后在ios这边用线程或者nstimer来调用发送心跳的接口
8、如何向服务器发送心跳包
这个你要和服务器端协商接口 然后在ios这边用线程或者nstimer来调用发送心跳的接口
/向服务器发送心跳包 sendHeartbeatPackage(mRestMsg); count += 1; } Thread.sleep(1000 * 3); } catch (InterruptedException e)
9、心跳接口是什么
群-HA,是连接主备服务器的线路,主备机器之间会定时通过心跳链路发送心跳信号,告诉对方自己的运行状况。
10、什么是TCP/IP通讯中的心跳包
心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
心跳包在GPRS通信和CDMA通信的应用方面使用非常广泛。数据网关会定时清理没有数据的路由,心跳包通常设定在30-40秒之间。
所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
(10)服务器心跳扩展资料:
心跳包作用:
在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项。系统默认是设置的是2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。
心跳包一般来说都是在逻辑层发送空的包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了。只需要send或者recv一下,如果结果为零,则为掉线。
但是,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。