我使用的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