用TcpClient实现客户端和服务端通信,心跳包怎么弄呢? 用TcpClient实现客户端和服务端通信,心跳包怎么弄呢?求各路大神指教!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在一些程序中,心跳包是代表了用户在线的状态,只要在线就定时发送心跳包,比如某些网游,QQ,等的程序。简单来说,心跳包相当于键值对的对比判断。比如,客户端登录时候,服务端分配给可以一个key,客户端每1分钟发送一次心跳包表示自己在线,发送时候服务端就靠这个key来识别是哪一个客户段并更新在服务端中维护的一个用户的数据空间,服务端自己每1分钟扫描这段数据空间,如果发现当前时间-上次心跳时间大于了1分钟,说明客户端掉线,那么将清理这块数据这只是简单的应用举例 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设置是否需要发送心跳,以及心跳的频率 另外一个帖子我给你贴了socket怎么调IOControl,然后你直接 TcpClient.Client.IOControl 就应该可以了。 [CorePlex开发手记]Winform窗体皮肤及简单换肤机制 TreeView 的问题~~ 大家帮忙那个看看啊~ 如何使用C#对Excel两个sheet中的指定cell进行数据对比验证? FILEUPLOAD控件,可以支持FTP上传吗 C#.NET 怎么在ContentMenu一个菜单项前加说明文字? 有关一个对话框的问题 C#中,如何将某个Dataset中的表整表导出到某Access数据库的表中 一个ListBox的小问题,帮忙就给50分 谢谢 请指点下 求个zpl条码指令 c#串口通信 快点进来,昨天判断控件你们不给力,今天必须给力点
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设置是否需要发送心跳,以及心跳的频率
然后你直接 TcpClient.Client.IOControl 就应该可以了。