服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出?
2016-10-13 09:03
309 查看
服务器或者客户端异常退出,其相应的客户端或者服务器如何来判断是在等待发送还是退出?
当对等方断开连接,情况会有以下2种情况:
1 软件断开:这种情况,对等放会发来FIN,所以recv函数会返回,并返回0。
2 物理断开:这种属于灾难性,比如海底光缆被大白鲨咬断了等等。你的recv函数不会有任何响应,45分钟后,它将返回一个错误,这是TCP保活定时器产生的事件。
如何知道,对等方已经断开了呢? 保险的方法只有心跳包,定时发送,并接受心跳包,一旦超时不到,就断开连接,并回收资源。不要胡思乱想,这是唯一的办法。
有时间添加相应代码!
【参考】答案来自于http://bbs.csdn.net/topics/350038649论坛
当对等方断开连接,情况会有以下2种情况:
1 软件断开:这种情况,对等放会发来FIN,所以recv函数会返回,并返回0。
2 物理断开:这种属于灾难性,比如海底光缆被大白鲨咬断了等等。你的recv函数不会有任何响应,45分钟后,它将返回一个错误,这是TCP保活定时器产生的事件。
如何知道,对等方已经断开了呢? 保险的方法只有心跳包,定时发送,并接受心跳包,一旦超时不到,就断开连接,并回收资源。不要胡思乱想,这是唯一的办法。
有时间添加相应代码!
【参考】答案来自于http://bbs.csdn.net/topics/350038649论坛
相关文章推荐
- 如何判断是客户端问题还是服务器问题
- 牛腩购物33:发布网站,将网站上传到外网,讲数据库发布到远程服务器,如何在服务器上开数据库,更换电脑后微软企业库报错,网站异常后发送错误信息到指定邮箱,设置错误页
- js如何判断客户端是iOS还是Android等移动终端
- Python编写的客户端给服务器发送指令执行相应的命令并返回结果
- Redis服务器如何发送回复内容给客户端
- 服务器如何判断客户端非正常掉线-心跳连接
- Js如何判断客户端是PC还是手持设备简单分析
- 如何判断一个app是原生app还是 webapp,或者是混合app
- JS判断客户端是否是iOS或者Android还是电脑端
- Js如何判断客户端是PC还是手持设备简单分析
- 如何解决同一URL 地址,服务器图片更变了,客户端怎么判断是否需要更变
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的
- 微信公众号自定义转发窗口时如何判断用户点击的是“取消”还是“发送”
- android下socket编程问题:服务器关闭时,客户端发送请求的异常处理
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- js如何判断客户端是iOS还是Android等移动终端
- Python编写的客户端给服务器发送指令执行相应的命令并返回结果
- 如何判断服务器为虚拟机还是物理真机?
- JS判断客户端是否是iOS或者Android,js判断是不是qq,js判断是否是移动端,跳转到相应的页面
- 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,