完成端口与套接字绑定的OVERLAPPED结构释放问题

原创 2006年06月01日 02:47:00

如何正确地关闭I/O完成端口一—特别是同时运行了一个或多个线程,在几个不同的套接字上执行I/O操作的时候。要避免的一个重要问题是在进行重叠I/O操作的同时,强行释放—个OVERLAPPED结构。要想避免出现这种情况,最好的办法是针对每个套接字句柄,调用closesocket函数。任何尚未进行的重叠I/O操作都会完成。—旦所有套接字句柄都已关闭。便需在完成端口上,终止所有工作者线程的运行。要想做到这一点,需要使用  
  PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义:    
  BOOL   PostQueuedCompletionStatus(  
          HANDLE   CompletlonPort,  
          DW0RD     dwNumberOfBytesTrlansferred,  
          DWORD     dwCompletlonKey,  
  LPOVERLAPPED   lpoverlapped,  
  );  
          其中,CompletionPort参数指定想向其发送一个完成数据包的完成端口对象。而就dwNumberOfBytesTransferred,dwCompletionKey和lpOverlapped这三个参数来说.每—个都允许我们指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数。这样—来。—个工作者线程收到传递过来的三个GetQueuedCompletionStatus函数参数后,便可根据由这三个参数的某一个设置的特殊值,决定何时应该退出。例如,可用dwCompletionPort参数传递0值,而—个工作者线程会将其解释成中止指令。一旦所有工作者线程都已关闭,便可使用CloseHandle函数,关闭完成端口。最终安全退出程序。

IOCP中CompletionKey(完成键)与Overlapped(重叠结构体)的区别

BOOL GetQueuedCompletionStatus(   HANDLE                   CompletionPort,       // 完成端口句柄   LPDWORD...
  • gsls181711
  • gsls181711
  • 2013年11月11日 13:23
  • 856

CIOCPServer类的总体结构

CIOCPServer类有多个IO工作线程在完成端口上处理异步IO调用。当特定的网络事件发生时,这些线程调用CIOCPServer类的虚函数,添加自己想要的代码。 CIOCPServer执行的步骤: ...
  • changyourmind
  • changyourmind
  • 2016年05月21日 15:18
  • 548

完成端口IOCP,重叠,消息选择,消息异步等等....

谢谢 免杀之神给的PEB过防火墙的资料, 时间不多看群里热闹把 讨论的是关于 多连接的问题记下来以后整理.........  夕草(8999094) 2007-11-29 22:26:20我夕草(89...
  • chinafe
  • chinafe
  • 2007年11月30日 14:41
  • 1710

完成端口详解

完成端口详解(1)       通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接...
  • yejiansnake
  • yejiansnake
  • 2008年05月30日 18:04
  • 7775

完成端口与高性能服务器程序开发

Blog:kruglinski.blogchina.com 早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,...
  • xjbclz
  • xjbclz
  • 2016年06月30日 21:49
  • 1594

完成端口中的单句柄数据结构与单IO数据结构的理解与设计

本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、传播,但任何对本文的引用均须保留本文的作者、出处及本行声明信息!谢谢!  完...
  • sodme
  • sodme
  • 2005年07月17日 16:57
  • 10078

IOCP 模型实现

IOCP模型
  • CAir2
  • CAir2
  • 2017年01月19日 16:27
  • 365

完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                        ...
  • PiggyXP
  • PiggyXP
  • 2011年11月01日 08:17
  • 155292

IOCP编程之重叠IO

其实这个标题有点“标题党”的味道,为了大家搜索方便我故意冠以IOCP编程之名,其实重叠IO编程并不一定需要IOCP,而IOCP编程就一定需要重叠IO。是不是已经被这句话给绕晕了?总之是为了更好的应用I...
  • markman101
  • markman101
  • 2012年05月10日 20:25
  • 2595

Windows下重叠I/O模型

 一.Windows下重叠I/O模型1. 重叠模型的优点2. 重叠模型的基本原理3. 关于重叠模型的基础知识4. 重叠模型的实现步骤5. 多客户端情况的注意事项 二.重叠模型的优点 1.可以运行在支持...
  • zhongguoren666
  • zhongguoren666
  • 2007年10月16日 17:28
  • 3323
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:完成端口与套接字绑定的OVERLAPPED结构释放问题
举报原因:
原因补充:

(最多只允许输入30个字)