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

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


当对等方断开连接,情况会有以下2种情况: 
1  软件断开:这种情况,对等放会发来FIN,所以recv函数会返回,并返回0。
2  物理断开:这种属于灾难性,比如海底光缆被大白鲨咬断了等等。你的recv函数不会有任何响应,45分钟后,它将返回一个错误,这是TCP保活定时器产生的事件。


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


有时间添加相应代码!


【参考】答案来自于http://bbs.csdn.net/topics/350038649论坛

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值