码迷,mamicode.com
首页 > 其他好文 > 详细

diocp从零开始1

时间:2018-09-23 22:31:11      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:调用   完成   慢慢   .sh   有一个   顺序   基础   接收   post   

diocp是windows下最复杂的通讯技术也是效率最高的,之前一直想学但都没学会。因手上有一个项目是很老的delphi项目,想用diocp改造成三层的,所以这次一定要好好学习,争取把这个技术拿下。

基础知识

想学好diocp就得先打好基础,没有基础是无从下手的,边摸索边做实例,慢慢总结经验。

异步模式:类似form.show();

阻塞模式:类似form.showModal();

 

WSAAccept;

当客户端有连接请求的时候,WSAAccept函数会新创建一个套接字cSocket。

这个函数不是异步的,是阻塞模式。

 

WSARecv;

收取socket的数据

这个函数是异步模式,执行后马上返回。

数据接收到后,GetQueuedCompletionStatus,会返回

 

GetQueuedCompletionStatus:

实现从指定的IOCP请求队列中获取请求。

当队列为空时,对此函数的调用将被阻塞。

当队列不为空时,被阻塞的线程将以后进先出(LIFO)顺序被请求出去.

 

PostQueuedCompletionStatus:

向IO完成端口Post一个I/O完成数据包。

PostQueuedCompletionStatus(lvIOPort, 0, 0, nil);

想IO端口中发送一个数据包到队列中.会触发一个GetQueuedCompletionStatus有返回值,并不会所有的线程中的GetQueuedCompletionStatus有返回值。

 

diocp从零开始1

标签:调用   完成   慢慢   .sh   有一个   顺序   基础   接收   post   

原文地址:https://www.cnblogs.com/lijunno1/p/9693716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!