日期:2014-05-20  浏览次数:20672 次

服务器端检测客户端5秒内没发送数据则断开连接有人做过此试验吗
服务器端检测客户端5秒内没发送数据则断开连接有人做过此试验吗

------解决方案--------------------
用heartbeat机制,基于TCP协议的应用协议必备
------解决方案--------------------
无法处理:你怎么区分你的客户端是掉线了,还是速度比较慢?

TCP协议中有一个TimeOut值,就是一个包发出之后,最长多少时间没有收到Ack便断线。而这个值通常会很大(好像是2小时?虽然我不太清楚为什么)。应用层协议总会有heartbeat,即在没有数据交互的时候,客户端向服务器端每隔几秒钟发送一个简单的数据包,来告诉服务器自己还活着;而服务器也会回应这个包来表示自己也活着。当过长一段时间没有收到客户端的数据包时,服务器就认为客户端已经断线。

你知道为什么QQ游戏,当一个人掉线了的时候,不是马上从房间消失,而是过一会儿才消失了吧?