我想知道有关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/

10-09 06:01
查看更多