|
楼主 |
发表于 2020-2-21 14:00:01
|
显示全部楼层
谢谢大家的帮忙,我终于想前进了一大步,可以接收到客户端的数据了。我发现在accept之后调用的WSARecv() 相当于设置缓冲区等东西,GetQueuedCompletionStatus 就利用这些东西填补缓冲。 如果缓冲区够大,GetQueuedCompletionStatus() 之后的 WSARecv() 都不是必须的,反之如果缓冲不够大,WSARecv()就是必须的了,而且每次WSARecv()之后就会影响 GetQueuedCompletionStatus() 的缓冲。
还没有搞清楚 IOCP 的所有内幕,但是已经是向前进了。
to xop000:
我也觉得应该是你说顺序,但是我按照前一个顺序还是可以执行。估计是 Winsock 的函数足够聪明 ? 在 WSARecv()调用时在系统中存了信息,所以之后调用 CreateIoCompletionPort() 也能够正常 IO ?
有高手来分享一下内幕吗?
|
|