Здравствуйте, Panerox, Вы писали:
P>Здравствуйте!
P>Вот код сервера здесь
P>Столько времени убил на то чтобы найти ошибку, но все равно никак не могу.
P>Функция WSARecv все время возвращает SOCKET_ERROR + WSA_IO_PENDING.
P>GetQueuedCompletionStatus() возвращаем CompletionKey и Overlapped структуру. Все типа хорошо. Каждый Recv ловится нормально, но с ошибкой SOCKET_ERROR + WSA_IO_PENDING.
P>Я все перерыл, но безуспешно. Не могу понять когда операция завершится, все время PENDING
.
P>Может кто подскажет, где баг зарыт. Чувствую, что где-то лажу сделал
.
P>Спасибо!!!
Так а нет бага.
WSARecv вам гвоорит сколько было прочтено, естевенно все прочесть наверно не смогло, потому SOCKET_ERROR WSA_IO_PENDING — просто напоминание вам что считано не все что вы спрашивали.
На всяк случае напомню.
Посему нужно самому следить за указателем записи, тоесть к примеру если у вас есть буфер на 1Килобайт, а после чтения функция чтения вернула вам 100, то следующе обращение к функции нужно будет делать с параметрами — ячейка памяти буфера смещенная на 100 и 1024 — 100 байт.