Re[2]: completion port, WSARecv, buflen
От: Аноним  
Дата: 18.02.09 18:38
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, Aspire, Вы писали:


MC>Колбэк на порту завершения будет вызван:


MC>... на каждый успешный вызов WSARecv. Вызов WSARecv считается успешным, если он вернул 0 или ошибку WSA_IO_PENDING.


MC>Это единственное, на что можешь рассчитывать. Все остальные зависимости (от размера буфера, количества поступивших данных и т.п.) будут работать с разной степенью частоты — от "никогда" до "иногда".


В связи с этим, следующий вопрос. Как мне на порту завершения получить уведомление о том, что получены все данные?
В случае с WSASend, можно, конечно, передать в конце структуры WSAOVERLAPPED размер передаваемых данных, а в обработчике складывать отправленные байты отдельно для каждого сокета, но мне кажется этот вариант не очень удачным. Опять же, как поступать в этом случае с WSARecv, где мы не знаем конечный размер данных?
Может, забить на колбэк порта и стартовать обработчик по эвэнту?

Подскажите, если у кого есть какие мысли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.