当前位置:编程学习 > C#/ASP.NET >>

在TCP服务中如何判断客户端异常断开

如题,要有实际的处理方案,而不是仅仅在建立连接的时候加个keeplive参数 --------------------编程问答-------------------- 如果要有具体的方案,你也要把你的需求的描述的具体些啊。TCP服务是什么意思? 用的框架写的还是用socket写的等等,cs还是bs,对什么要求比较严格等等。。。。 --------------------编程问答-------------------- 定时发送信息,看有没有正常回复
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 建议定时发心跳包,如果客户端异常断开时会抛出异常,获取到异常就直接断开。 --------------------编程问答-------------------- 由client定时发送心跳包,server端记录最后心跳时间,开一个timer定时刷(date.now-最后心跳时间),如果超出一个范围比如(3分钟)就可以判定此client offline。

补充说明:socket是无法实时获取对方是否在线,只有在write时候才能判断出socket断开,断开的原因千奇百怪,所以单单靠什么异常是不靠谱的,比如说client直接拔电,拔网线,router断电,网络堵塞等等等等。 --------------------编程问答-------------------- http://bbs.csdn.net/topics/380220449 --------------------编程问答-------------------- 异常断开的判断肯定要用到保活机制。
1.自己实现保活机制
即增加协议双方实现心跳,服务端在某时间内收不到心跳就任务客户端挂了,就主动关闭连接。
2.利用keepalive
你这句“而不是仅仅在建立连接的时候加个keeplive参数”说明你根本没测试,在给你回复这帖子时我用keepalive已经跑了1天1夜了 --------------------编程问答-------------------- 我常叫心跳包 --------------------编程问答-------------------- 简单的超时检查即可,
比如超过一天没有动作的,回收之。 --------------------编程问答-------------------- 心跳包   思密达 --------------------编程问答-------------------- 用心跳报文来检测是很好的方法。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,