Я использую зЬй :: вектор для представления буфера в моей в структуре данных ввода-вывода:Какое максимальное количество байтов может получить 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;
Я хочу, чтобы указать максимальный размер и выполнить «сжиматься, чтобы соответствовать» на m_vecBuffer после вызова WSARecv().
Я посмотрел this page, но не смог найти информацию, которую я ищу.
Это не требует освобождения памяти? Я стараюсь избегать таких вещей на сетевых серверах. Я использую простые массивы и никогда не изменяю их размер. Я не знаю, что такое максимальный размер, но это больше, чем 256K. Вполне возможно, что это 4G на 32-битной системе (ОК, маловероятно на практике :). –
Отъезд [этот ответ] (http://stackoverflow.com/a/2862176/1496544). – Littlegator
@ Littlegator-Спасибо за ссылку! – jpen