当前位置: 代码迷 >> C# >> 怎么解释Socket中的保活机制和踢出用户机制
  详细解决方案

怎么解释Socket中的保活机制和踢出用户机制

热度:28   发布时间:2016-05-05 03:42:51.0
如何解释Socket中的保活机制和踢出用户机制?


1.首先TCP是长连接,连接后正常情况下是不会无故断开的,但是由于路由,以及防火墙等原因的存在,会踢出长时间没有数据交换的连接,所以要有一个保活机制,发送心跳包

或者设置

e.AcceptSocket.IOControl(IOControlCode.KeepAliveValues, _keepAliveOptions, null);

2.

a.在连接没有关闭的情况下客户端异常退出,服务端还要维持这样一个连接就比较浪费,所以要踢出;

b.踢出几分钟内没有交互的连接


问题:如何去理解这两种关系??

------解决思路----------------------
正常都应该按2的规则来办事

但是有特殊情况,需要服务器不停推送数据,而客户端几乎不发送数据给服务端

但是客户端长时间不发送数据又会自动断开,导致推送失败,所以不得已加个心跳让客户端不要断开连接
  相关解决方案