首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

TCP通讯服务器怎么检测失效的客户端

2012-01-21 
TCP通讯服务器如何检测失效的客户端?如果客户端禁用网络或者拔网线,服务器一切如常,在线列表也会多一个失

TCP通讯服务器如何检测失效的客户端?
如果客户端禁用网络或者拔网线,服务器一切如常,在线列表也会多一个失效的客户端。如果客户端是结束进程或者明确关闭,服务器会收到空信息或者捕获异常,可以处理。
现在想请问第一种情况如何处理,就是加一些特殊处理,可以及时释放连接和相关资源,把失效的连接处理掉

我的做法是开一个维护线程,某个Socket多少分钟内没有向服务器发任何数据(需要记录每个客户端最后一次向服务器发送数据的时间)的话,就把它断掉,释放资源。
这样可以达到目的,但维护线程需要占用服务器资源,并且遍历时要对在线列表加锁,很浪费资源

请教各位朋友,有没有更好的做法呢?

[解决办法]
http://blog.csdn.net/wzd24/archive/2007/04/13/1564112.aspx

看看我这篇文章,讲的就是这个。
[解决办法]
有,我的做法是在接受回调里捕捉异常
catch (SocketException ex)
{
if (ex.ErrorCode == 10054)
{
CloseSocket(cl);
}
}
可以在这里面处理
[解决办法]
up

热点排行