我想知道有关Windows下有I/O完成端口和没有I/O完成端口的重叠I/O的一些知识。
我预先知道使用WSASend()之后将收到多少个数据包。
所以我想这样做
for (int i = 0; i < n; i++)
WSARecv(sock, &buffer_array[i], 1, NULL, 0, &overlapped, completion_routine);
我的问题是:如何在通知缓冲区已满的情况下知道哪个缓冲区已满?我的意思是,不用猜测调用的顺序(buffer [0],buffer [1],buffer [2]等)。
我会找到一种替代解决方案,例如,在通知时为我提供缓冲区指针,这更加干净,并且随着我的应用程序设计的发展,更容易更改/适应。
谢谢。
最佳答案
现在,您正在启动n
并发接收操作。相反,一个接一个地启动它们。前一个完成后,开始下一个。
关于c++ - 检索具有多个重叠I/O请求的缓冲区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30778578/