用TcpClient实现客户端和服务端通信,心跳包怎么弄呢?

abjectionyouth 2013-03-31 10:22:18
用TcpClient实现客户端和服务端通信,心跳包怎么弄呢?
求各路大神指教!!!
...全文
1397 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyblusea 2013-04-01
  • 打赏
  • 举报
回复

int keepAlive = -1744830460;                                                        // SIO_KEEPALIVE_VALS 
byte[] inValue = new byte[] { 1, 0, 0, 0, 0x20, 0x4e, 0, 0, 0xd0, 0x07, 0, 0 };     // True, 20 秒, 2 秒 

sct = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

sct.IOControl(keepAlive, inValue, null);    
通过IOControl设置是否需要发送心跳,以及心跳的频率
abjectionyouth 2013-04-01
  • 打赏
  • 举报
回复
一个早上就要过去了,求帮助啊
catchdream 2013-04-01
  • 打赏
  • 举报
回复
另外一个帖子我给你贴了socket怎么调IOControl, 然后你直接 TcpClient.Client.IOControl 就应该可以了。
abjectionyouth 2013-03-31
  • 打赏
  • 举报
回复
具体给个简单的代码实例啊
孤零落叶寒 2013-03-31
  • 打赏
  • 举报
回复
在一些程序中,心跳包是代表了用户在线的状态,只要在线就定时发送心跳包,比如某些网游,QQ,等的程序。简单来说,心跳包相当于键值对的对比判断。比如,客户端登录时候,服务端分配给可以一个key,客户端每1分钟发送一次心跳包表示自己在线,发送时候服务端就靠这个key来识别是哪一个客户段并更新在服务端中维护的一个用户的数据空间,服务端自己每1分钟扫描这段数据空间,如果发现当前时间-上次心跳时间大于了1分钟,说明客户端掉线,那么将清理这块数据 这只是简单的应用举例
xiaoyuan402 2013-03-31
  • 打赏
  • 举报
回复
其实也就是发送指令过去啊。。只是这个指令有特殊的标记。你在解析的时候自己特殊处理呗。

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧