Здравствуйте, Panerox, Вы писали:
V>>Так а нет бага.
V>>WSARecv вам гвоорит сколько было прочтено, естевенно все прочесть наверно не смогло, потому SOCKET_ERROR WSA_IO_PENDING — просто напоминание вам что считано не все что вы спрашивали.
V>>На всяк случае напомню.
V>>Посему нужно самому следить за указателем записи, тоесть к примеру если у вас есть буфер на 1Килобайт, а после чтения функция чтения вернула вам 100, то следующе обращение к функции нужно будет делать с параметрами — ячейка памяти буфера смещенная на 100 и 1024 — 100 байт.
P> nRecvResult = WSARecv(sClient->scSocket,
P> &(sClientOverlapped->scDataBuf),
P> 1,
P> &dwBytes,
P> &dwFlags,
P> &(sClientOverlapped->scOverlapped),
P> NULL);
>>>>к примеру если у вас есть буфер на 1Килобайт, а после чтения функция чтения вернула вам 100
P>В моем случае я отправляю 64 байта, а функция возвращает, что считано 0 и так всегда. Если бы она вернула что считана часть, я бы считал следующую часть и так до конца. Но она возващает всегда 0, вот тут и загвоздка. Я не могу узнать сколько прочитано.
P>Статьи я почитал и сделал все как было написано, может конечно, что и не понял. Помоги те разъяснить пожалуйста.
Чесно сказать в код вникать лень. Да и время нет.
Могу посоветовать книгу Рихтера "Network Programming for Microsoft Windows", если есть желание вышлю на мыло, она на английском, на русском я так и не нашол ее.
Прочитав тему ИОСП в ней я понял что от меня хотят — вообще книга хорошая.