gpt4 book ai didi

c++ - WSARecv() 和多个缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:46 25 4
gpt4 key购买 nike

我想要 WSARecv 的精度。

基本上,您似乎可以将函数与 WSABUF 数组一起使用。

1- 在重叠的 I/O 上下文中 WITHOUT 完成端口,假设我在具有 48 个 WSABUF 数组的数据报套接字上使用 WSARecv(),这是否意味着我可以接收 48 个不同的 UDP 数据包(每个缓冲区 1 个数据包)在一次调用中(假设它们在同一时刻到达)?或者接收 48 个数据包的唯一方法是在事件发出信号后使用 WSARecv() 48 次(使用重叠 I/O 与事件而不是完成端口,我重复一遍)。

2- 在 WITH I/O 完成端口/重叠 I/O 的上下文中,这是否意味着我可以替换它

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

用这个?

WSARecv(sock, buffer_array, 48, NULL, 0, &overlapped, completion_routine);

基本上这是否意味着使用 48 个缓冲区调用 WSARecv() 将发布 48 个读取请求?

3- 如果不是,WSABUF 数组的用途是什么?我的意思是,只有一个尺寸正确就够了吗?

非常感谢!

最佳答案

一个 WSARecv() == 一个数据报。多个缓冲区允许您将该数据报拆分为标题、主体、尾部等,如果您事先知道这些东西有多大的话。它不会让您一次接收 48 个数据报。

关于c++ - WSARecv() 和多个缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com