c++ - 检索具有多个重叠 I/O 请求的缓冲区

标签 c++ sockets winapi winsock iocp

我想了解有关 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/

相关文章:

c++ - C++中类型和类之间的区别?

c# - 如何在 C# 中取消绑定(bind)套接字?

c# - 在 UWP 中启动后台 win32 控制台应用程序

c++ - 如果内存超过一定限制则关闭程序 - c++/Qt

c++ - gdb - 从核心文件中得到完全意外的错误

JAVA - 一个简单的服务器看到客户端的困难

c++ - 将透明位图添加到 Windows 按钮

c++ - 为什么没有获取互斥体?

c++ - 是否可以将成员函数添加到 C++ 中的数据类型?

c - 在 C 中为套接字编写 send_all 和 recv_all 函数