我想对WSARecv有所了解。
基本上,您似乎可以将该函数与WSABUF数组一起使用。
1-在没有完成端口的重叠I / O上下文中,假设我在具有48个WSABUF数组的数据报套接字上使用WSARecv(),这是否意味着我可以在单个接收48个不同的UDP数据包(每个缓冲区1个数据包)打电话(假设他们在同一确切的时间到达)?或者,接收48个数据包的唯一方法是在事件发出信号后48次使用WSARecv()(我将重复的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个数据报。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句