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

c++ - 检索具有多个重叠IO请求的缓冲区,第1张

我想知道有关Windows下重叠I / O的信息,包括有无I / O完成端口。 我事先知道在使用WSASend()后我将收到多少数据包。

所以我想这样做

for (int i = 0; i < n; i  )
   WSARecv(sock, &buffer_array[i], 1, NULL, 0, &overlapped, completion_routine);

我的问题是:如果通知填充缓冲区,我怎么知道填充了哪个缓冲区?我的意思是,不按调用顺序猜测(缓冲区[0],缓冲区[1],缓冲区[2]等)。

我会找到一种替代解决方案,例如,在通知时给我缓冲区指针更加干净,并且随着应用程序设计的发展,更容易更改/适应。

感谢。

最佳答案:

2 个答案:

答案 0 :(得分:2)

现在您正在开始n并发接收操作。相反,一个接一个地启动它们。当前一个完成时开始下一个。

答案 1 :(得分:0)

使用完成例程时,OVERLAPPED块中的hEvent字段未使用,可用于将上下文信息传递到完成例程。通常,这将是指向缓冲区类实例的指针或缓冲区实例数组的索引。通常,OVL块将是实例的结构成员,因为每次调用需要单独的OVL。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复