我想了解有关 Windows 下重叠 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/