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

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

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

А>В связи с этим, следующий вопрос. Как мне на порту завершения получить уведомление о том, что получены все данные?


Никак. Ты заказал операцию ввода/вывода, по ее окончании тебе пришло уведомление. В уведомлении сказано, сколько байт было передано или принято. В пределах [0 ... заказанное количество].

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


Не понял проблемы.

А>Может, забить на колбэк порта и стартовать обработчик по эвэнту?


Не знаю. Не совсем понятно, что ты понимаешь под "колбэк порта", и чем "обработчик по эвэнту" лучше него.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.