1.完成端口针对的是句柄,只要句柄可进行重叠IO操作的都可以使用。

2.基本流程为

用无参数的createIOcompleteport方法建立完成端口。

建立GetQueuedCompletionStatus循环线程

创建关联句柄。

用带参数的createIOcompleteport方法绑定关联句柄和完成端口。

执行带重叠io的操作

3.通过区分GetQueuedCompletionStatus所带的2个参数,可确定来源。

4.如果操作失败,GetQueuedCompletionStatus会直接返回,但如果在GetQueuedCompletionStatus处理过程中再次操作重叠io并失败,GetQueuedCompletionStatus不会处理。

5.如果用AcceptEX处理连接,如果对方在AcceptEX处理之前连接上又断掉(这些连接请求会保存在Listen socket的连接请求队列中),GetQueuedCompletionStatus也会返回,这时就需要判断第一个WSARecv是否成功,如果失败的话就直接closesocket,需要继续接受处理的话就再建立一个socket并acceptex,最后绑定到完成端口

6.如果使用disconnectEX,它也会导致GetQueuedCompletionStatus返回,所以要对其专门做处理。

7.一般的断线检测

一是检查WSARecv导致GetQueuedCompletionStatus返回处理字节为0的时候

二是检测WSARecv是否正常开启重叠IO的时候。

8.overlapped结构,acceptec和WSARecv可以都用同一个,可以在断线后释放,而send,disconnectex的必须自己new一个新的,并在处理完后立即释放。

iocp端口断开_iocp 关闭 | 学步园相关推荐

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

    判断客户端是否关闭: 1 GetQueuedCompletionStatus 返回 FALSE,根据错误号判断. 2 客户端端定时发送(也就是心跳包判断) 补:GetQueuedCompletionS ...

  2. centos mysql stop_[MySQL] 在Centos下的启动和关闭 | 学步园

    现在主流的Unix系统有两种风格:System V和BSD,他们的区别如下: Linux作为类Unix,同样也存在这两种风格,其中Centos属于System V,本文主要介绍在Centos下(即Sy ...

  3. 重启oracle ora-01033,解决连接ORACLE错误一例:ORA-01033: ORACLE 正在初始化或关闭 | 学步园...

    客户发现连接数据库有问题,错误有: ORA-01033: ORACLE 正在初始化或关闭 ORA-00600: 内部错误代码 首先修改环境变量,保证cmd下访问到正确的oracle监听,如: E:\o ...

  4. mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...

    该篇文章我们介绍由于非法硬件关机,造成了MySQL数据库的数据表损坏,数据库不能正常运行的一个实例.下面学步园小编来讲解下MySQL数据库非法关机造成数据表损坏怎么排查? MySQL数据库非法关机造成 ...

  5. netmiko 记录日志_Pythonnetmiko模块的使用 | 学步园

    一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...

  6. Dos命令 netstat -ano 查看端口占用及关闭进程

    Dos命令查看端口占用及关闭进程 1. 查看端口占用 2. 关闭进程 3. 端口状态 netstat -ano  ---------该命令是查看当前哪些端口正在被使用 1. 查看端口占用 在windo ...

  7. Dos命令查看端口占用及关闭进程

    Dos命令查看端口占用及关闭进程 1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 ...

  8. layui上传图片列表展示_layui怎么做图片在列表中显示 | 学步园

    layui table中显示图片的方法: 图片需要用到模板.templet: 注意div不可省略,48px指的是div的高度,如果要决定img图片的高度,需要单独设计style ',style:'he ...

  9. Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放;服务器端口开放与关闭

    Postman请求linux服务器报错:503Forwarding failure,由于服务器端口未开放:服务器端口开放与关闭 文章目录: 1 问题分析 2 在Centos上开启和关闭端口 2.1 C ...

最新文章

  1. 最后的分的计算机公式,省考最后10天!掌握这些数学运算公式,提分!
  2. linux睡眠当前进程,linux-0.11中进程睡眠函数sleep_on()解析
  3. 独家 | 如何“扰乱”科技巨头用来监视你的数据
  4. 红帽虚拟化RHEV-PXE批量安装RHEV-H
  5. golang web 框架 gin beego iris 对比
  6. 腾讯再次劝退高龄员工,IT人的中年危机,我来教你化解!
  7. NLP领域最近比较火的Prompt,能否借鉴到多模态领域?一文跟进最新进展
  8. idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库
  9. js--属性和方法(私有/公有)
  10. linux离线卸载docker,Linux系统下Docker的安装与卸载
  11. UI设计中关于按钮的那些事
  12. 总结使用Unity 3D优化游戏运行性能的经验
  13. 满纸荒唐言:Processing 寻觅文字魅力篇
  14. nu.xom:Attribute
  15. IDEA怎样自定义 Touch Bar
  16. php仿qq聊天界面,jquery仿微信聊天界面
  17. c语言void结尾,C语言中void*详解及应用
  18. RTK+GPS提高定位精度原理解析
  19. LeetCode 区间子数组个数
  20. 更改zabbix数据库mandatory

热门文章

  1. pywin32_win32gui win32con win32com win32api
  2. 《颠覆者·周鸿祎自传》读后感
  3. 青蛙换位问题之递归回溯法
  4. Python爬虫403错误的解决方案
  5. 局域网测速iperf3
  6. 百度搜索排行最新算法
  7. 用单片机解码红外遥控器
  8. 智能门锁里的大市场,凯迪仕签署上市辅导协议,冲击A股上市
  9. linux 开源电子软件,linux下开源电子设计软件
  10. Java、JSP电子健康档案管理系统