Здравствуйте, Аноним, Вы писали:
MC>>Колбэк на порту завершения будет вызван: MC>>... на каждый успешный вызов WSARecv. Вызов WSARecv считается успешным, если он вернул 0 или ошибку WSA_IO_PENDING.
А>В связи с этим, следующий вопрос. Как мне на порту завершения получить уведомление о том, что получены все данные?
Никак. Ты заказал операцию ввода/вывода, по ее окончании тебе пришло уведомление. В уведомлении сказано, сколько байт было передано или принято. В пределах [0 ... заказанное количество].
А>В случае с WSASend, можно, конечно, передать в конце структуры WSAOVERLAPPED размер передаваемых данных, а в обработчике складывать отправленные байты отдельно для каждого сокета, но мне кажется этот вариант не очень удачным. Опять же, как поступать в этом случае с WSARecv, где мы не знаем конечный размер данных?
Не понял проблемы.
А>Может, забить на колбэк порта и стартовать обработчик по эвэнту?
Не знаю. Не совсем понятно, что ты понимаешь под "колбэк порта", и чем "обработчик по эвэнту" лучше него.