服务器实现心跳机制的两种策略
来源:互联网 发布:白葡萄酒 品牌 知乎 编辑:程序博客网 时间:2024/06/06 03:41
大部分CS的应用需要心跳机制。心跳机制一般在Server和Client都要实现,两者实现原理基本一样。Client不关心性能,怎么做都行。
如果应用是基于TCP的,可以简单地通过SO_KEEPALIVE实现心跳。TCP在设置的KeepAlive定时器到达时向对端发一个检测TCP segment,如果没收到ACK或RST,尝试几次后,就认为对端已经不存在,最后通知应用程序。这里有个缺点是,Server主动发出检测包,对性能有点影响。
应用自己实现
Client启动一个定时器,不断发心跳;
Server收到心跳后,给个回应;
Server启动一个定时器,判断Client是否存在,判断方法这里列两种:时间差和简单标志。
1. 时间差策略
收到一个心跳后,记录当前时间(记为recvedTime)。
判断定时器时间到达,计算多久没收到心跳的时间(T)=当前时间 - recvedTime(上面记录的时间)。如果T大于某个设定值,就可以认为Client超时了。
2. 简单标志
收到一个心跳后,设置连接标志为true;
判断定时器时间到达,查看所有的标志,false的,认为对端超时了;true的将其设成false。
上面这种方法比上面简单一些,但检测某个Client是否离线的误差有点大。
- 服务器心跳机制 - 两种实现策略
- 服务器实现心跳机制的两种策略
- 服务器实现心跳机制的两种策略
- 服务器实现心跳机制的两种策略
- 网络通信中的心跳机制的实现
- 网络通信中的心跳机制的实现
- 网络通信中的心跳机制的实现!
- boost设计TCP服务器中的strand与心跳机制实现
- 心跳机制的作用
- 心跳服务器的设计
- 服务器见的心跳
- Session的两种实现机制
- Session的两种实现机制
- [摘录]网络通信中的心跳机制的实现
- 即时通讯里android客户端心跳机制的分析和实现
- Android socket与服务器通信及心跳连接的实现
- java零碎要点009---java实现服务器心跳机制,TCP握手
- [Erlang]ErlangVM的心跳机制
- 038_《Borand传奇》
- Error #2044: Unhandled IOErrorEvent:. text=Error #2031: Socket Error.
- ubuntu删除当前系统中的旧版本的内核
- 039_《Delphi6.Kylix2.SOAP.Web Service程序设计篇》
- 哈哈
- 服务器实现心跳机制的两种策略
- RBAC角色权限模型设计
- Verilog HDL语法基础
- Blackberry 网络连接编程
- STL 积累
- ArcGIS 10 破解方案
- linux curl用法详解
- C/C++ 堆、栈、自由存储区、全局/静态存储区和常量存储区
- 用VS2010编译rotor