gpt4 book ai didi

c++ - WSARecv 一次可以接收的最大字节数是多少?

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:54 24 4
gpt4 key购买 nike

我正在使用 std::vector 来表示我的 per IO 数据结构中的缓冲区:

struct PerIoData 
{
WSAOVERLAPPED m_overlapped;
SOCKET m_socket;
WSABUF m_wsaBuf;
std::vector<BYTE> m_vecBuffer;
DWORD m_dwFlags;
DWORD m_dwNumberOfBytesSent;
DWORD m_dwNumberOfBytesToSend;
eOperationType m_operationType;
};

...
...
if (WSARecv(pPerIoData->m_socket, &(pPerIoData->m_wsaBuf), 1, &dwNumberOfBytesReceived, &(pPerIoData->m_dwFlags), &(pPerIoData->m_overlapped), NULL) == 0)
continue;

我想在调用 WSARecv() 后指定最大大小并在 m_vecBuffer 上执行“收缩以适合”。

我看过this page但无法找到我要查找的信息。

最佳答案

您传递给 WSARecv()WSABUF 结构指定指向缓冲区的指针,WSARecv() 将字节读入其中,并且可以读入该缓冲区的最大字节数。当 WSARecv() 完成其工作时,它会报告实际读入缓冲区的字节数。如果你使用 vector 作为缓冲区,你必须预先分配 vector 到你想要的任何最大大小,然后设置 WSABUF::buf 指向 vector 的内部内存,将 WSABUF::len 设置为 vector 的分配大小,然后将 vector 的大小调整为 WSARecv() 报告的新值。

关于c++ - WSARecv 一次可以接收的最大字节数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11651829/

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