您的位置:首页 > 编程语言 > C语言/C++

服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出?

2016-10-13 09:03 309 查看
服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出?

当对等方断开连接,情况会有以下2种情况: 

1  软件断开:这种情况,对等放会发来FIN,所以recv函数会返回,并返回0。

2  物理断开:这种属于灾难性,比如海底光缆被大白鲨咬断了等等。你的recv函数不会有任何响应,45分钟后,它将返回一个错误,这是TCP保活定时器产生的事件。

如何知道,对等方已经断开了呢? 保险的方法只有心跳包,定时发送,并接受心跳包,一旦超时不到,就断开连接,并回收资源。不要胡思乱想,这是唯一的办法。

有时间添加相应代码!

【参考】答案来自于http://bbs.csdn.net/topics/350038649论坛
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐