我使用的std ::载体,以表示我的每IO数据结构的缓冲区:WSARecv一次可以接收的最大字节数是多少?
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,但找不到我要找的信息。
这不需要内存释放吗?我尝试在网络服务器中避免这种情况。我使用普通数组并且从不调整它们。我不知道最大尺寸是多少,但是它大于256K。很可能它是32位系统上的4G,(可以,实际上不太可能)。 – 2012-07-25 14:26:42
看看[这个答案](http://stackoverflow.com/a/2862176/1496544)。 – Littlegator 2012-07-25 16:12:47
@ Littlegator-感谢您的链接! – jpen 2012-07-25 16:22:12