客户端意外挂掉,Server如何处理?
这个问题是最近棘手的问题。昨晚查了一下,竟然网上很多人问这个问题的解决方法。
长期使人困惑的问题:TCP连接中断的实时检测(看起来像一篇论文,感觉比较靠谱)
心跳机制tcp keepalive的讨论、应用及“断网”、"断电"检测的C代码实现(Windows环境下)(****排名第11名博主文章)
通过以上文章,博主结论为:采用heartbeat机制才检测客户端意外断开比较好。
----------------------------------------------------------------------------------
来个小插曲,与本主题无关,FIlezilla里面有个选项
可以选择实时速度,也可以选择显示平均速度。对我来说实时速度似乎更好些。
-----------------------------------------------------
开始与本主题有关的了,如下:
这个虽然上面写的是keepALIVE,但是事实上就是heartbeat。
好,我们检测一下FILEZILLA发送的周长时间是多少?
看了一下默认的时间大概是30秒(在进行文件传送的时候Filezilla也会发送heartbeat。)。
30秒有点长啊。交互一次,就有三条信息,也不算耗费资源,如下:
好,这时候如果我们断开服务器会咋样,
首先客户端会重发,如下:
重发的时间还挺有规律的啊,先是0.3秒,然后0.6秒,然后1.2秒,然后2.4秒,然后就不发了。
此时mesage log界面显示: