2010年12月4日

服务器实现心跳机制的两种策略

摘要: 大部分CS的应用需要心跳机制。心跳机制一般在Server和Client都要实现,两者实现原理基本一样。Client不关心性能,怎么做都行。如果应用是基于TCP的,可以简单地通过SO_KEEPALIVE实现心跳。TCP在设置的KeepAlive定时器到达时向对端发一个检测TCP segment,如果没收到ACK或RST,尝试几次后,就认为对端已经不存在,最后通知应用程序。这里有个缺点是,Server主动发出检测包,对性能有点影响。应用自己实现 Client启动一个定时器,不断发心跳; Server收到心跳后,给个回应; Server启动一个定时器,判断Client是否存在,判断方法这里列两种:时 阅读全文

posted @ 2010-12-04 10:48 daemonh 阅读(521) 评论(0) 推荐(0) 编辑

对端进程和主机非法崩溃对本地的tcp连接的不同影响

摘要: 1. 对端进程崩溃 对端协议栈将发出FIN;本地进程如果在recv或select/epoll,能感知到对端关闭。2. 对端主机崩溃 这个相当于拔网线或者中间路由器故障,崩溃端不做任何事情;本地进程只能通过SO_KEEPALIVE或应用的KEEPALIVE去检测对端挂了。 阅读全文

posted @ 2010-12-04 09:54 daemonh 阅读(235) 评论(0) 推荐(0) 编辑

导航