判断客户端是否关闭:

1 GetQueuedCompletionStatus 返回 FALSE,根据错误号判断。

2 客户端端定时发送(也就是心跳包判断)

补:GetQueuedCompletionStatus 的返回值为 ERROR_SUCCESS 和lpNumberOfBytes 为0的时,客户端sockt关闭。在测试的时候,连接的客户端发生异常崩溃,强制关闭客户端后,GetQueuedCompletionStatus 的返回值并不为 ERROR_SUCCESS,不过 lpNumberOfBytes 为0。所以判断客户端是否关闭可以只判断 lpNumberOfBytes 的值是否为0。

DWORD CIocpModeSvr::HeartBeatProc()

{

while(1)

{

{//Begin of CAutoLock

CAutoLock autoLock(cInfoSection);

LPPER_HANDLE_DATA PerHandleData = NULL;

for(ClientList::iterator iter = m_ClientList.begin(); iter != m_ClientList.end() && m_ClientList.size() >0; iter++)

{

PerHandleData = (*iter);

if(PerHandleData->bIsConnect)

{

sockaddr_in in;

in.sin_addr.S_un.S_addr = PerHandleData->IpAddr;

_Track("+连接:%s,心跳:%d",inet_ntoa(in.sin_addr),PerHandleData->dwHeartBeat);

}

if(PerHandleData->dwHeartBeat < 7)//连续三次没收到心跳就XX掉

{

// CancelIo((HANDLE) PerHandleData->sClient);

// closesocket(PerHandleData->sClient);

}

else//数据一切正常,心跳计数减一

{

(*iter)->dwHeartBeat--;

}

}

}//End of CAutoLock

Sleep(75 * 1000);//75秒检测一次心跳

}

return 0;

}

DWORD CIocpModeSvr::HeartBeatProcThread(LPVOID lParam)

{

return ((CIocpModeSvr*)lParam)->HeartBeatProc();

}

iocp端口断开_在完成端口IOCP模型判断客户端是否已关闭连接(掉线) | 学步园相关推荐

  1. 80端口攻击_内网端口转发工具的使用总结

    0x00 ew端口转发 0x01 portmap端口转发 0x02 htran端口转发 0x03 ssh端口转发 0x00 ew端口转发 环境准备 攻击机    win7(物理机) 192.168.3 ...

  2. 华为交换机命令 端口速率_华为交换机端口限速配置 | 铭泰网络

    一.华为6502系列 1.先配置一个全部permit的ACL acl 2000 rule 0 permit 2.在接口上应用 int g0/0/1 qos traffic-limit inbound ...

  3. java 扫描tcp端口号_多线程TCP端口扫描 java实现

    界面部分: import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt. ...

  4. wamp xampp mysql端口冲突_解决xampp端口冲突

    今天电脑按了一下xampp,结果运行wamp的时候,出现了下面的情况: 在网上查了一下,结果是端口被占用,然后我就手动修改了一下. 1.修改xampp的端口号 依次找到:XAMPP的安装目录(比如D: ...

  5. 华为交换机命令 端口速率_华为交换机端口限速配置

    S6506系列交换机: 1.全局模式下配置acl [S6506_A]aclnumber 4000 [S6506_A-acl-link-4000]rule permit ingress any egre ...

  6. curl socket 访问_使用Curl、socket、file_get_contents三种方法POST提交数据 | 学步园

    # <?php # /** # * Socket版本 # * 使用方法: # * $post_string = "app=socket&version=beta"; ...

  7. java跨站点脚本编制_跨站点请求伪造 跨站点脚本编制 通过框架钓鱼漏洞 | 学步园...

    1.跨站点请求伪造 跨站点脚本编制 通过框架钓鱼漏洞 主要是通过在url或参数中添加脚本如: 1.URL中添加 2.参数value=. 添加一个过滤器对特殊字符进行拦截 package com.xxx ...

  8. java post 注册_利用JAVA发送POST请求(垃圾注册就是这么产生的) | 学步园

    大伙都知道利用JAVA的net包的URL类和 URLConnection可以得到网页源代码(这个应该是蜘蛛程序的锥形吧),但是向网页发送数据怎么办呢,GET请求很好处理,直接在网址后面加参数就可以了, ...

  9. java中对于框架的理解_接触Java项目一周后对一些基本框架的理解 | 学步园

    最近一周接触了一个Java EE的B/S项目,里面用到了SSH,部分持久层用的是ibatis,接触完后觉得有收获,于是把认识到的记录下来.同时欢迎高手拍砖. 现在终于知道所谓的三层框架(视图层,业务逻 ...

最新文章

  1. Vue.js 源码目录设计(二)
  2. 学python语言用什么软件-对于自学python的初学者来说,应该使用什么编辑工具?...
  3. DFT实训教程笔记3(bibili版本)-SOC Scan Implementtation Scan Practice Session II
  4. 云炬金融每日一题20211008
  5. 使用ultramon调整任务栏高度
  6. DipperRiver.Net通信协议设计
  7. 信息学奥赛一本通 1978:【18NOIP普及组】标题统计 | 洛谷 P5015 [NOIP2018 普及组] 标题统计
  8. QPushButton的四个信号:pressed(),clicked(),released(),toggled()
  9. python工资一般多少西安-python西安薪资
  10. “阿里云核心竞争力”峰会首日中奖小伙伴名单公布!机械键盘等豪礼下午继续放出!...
  11. 恒强制版系统980_恒强制版软件操作答疑
  12. mysql增删改查语法
  13. Vue_理解组件化开发
  14. PAT Basic 1055
  15. 2021年前端部署的灵魂拷问
  16. linux的原理和运用,Linux操作系统原理与应用_内存寻址
  17. 全新荣耀手表GS 3正式发布,8通道心率AI引擎精准高效管理健康生活
  18. php fpm 指定用户,php-fpm-请不要用root作为php工作用户
  19. modbus poll 6.3.1破解版 附注册码
  20. 快递100发送短信提醒

热门文章

  1. 劲乐园合歌(幽灵圣典+飞吧喜鹊+唯一+v3+幽灵圣典2)铃声 劲乐园...
  2. 计算机原理学习(序)
  3. Gartner预计2019年全球半导体收入将下滑9.6%;苹果中国用户正流向华为;Facebook将支付50亿美元与FTC和解...
  4. 《小王子》中的经典语录(中英文对照)
  5. Calllog第一天
  6. php生成sn码,PHP 生成SN码
  7. Mxnet训练自己的数据集并测试
  8. 稳中求变,试着提高时间管理能力
  9. 基于意图的网络(IBN)
  10. 【调剂】广西大学机械工程学院杨望农业机械团队招生