diocp从零开始1
Posted lijunno1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了diocp从零开始1相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章