Требуется асинхронная обработка ввода-вывода
Планируйте использование асинхронного ввода-вывода через вызовы aio * в Linux
Ситуация:
Я открыл сокет с флагами AF_INET и SOCK_STREAM (TCP). Имею лимит верхнего водяного знака для буферов отправки. Хотите выполнять запись в этот сокет асинхронно, а при переполнении буфера отправки хотите отключить сокет.
Итак, у меня есть вопросы:
Когда я сделал асинхронный вызов aio_write на TCP-сокете, когда наступит завершение ввода-вывода - когда буфер записан в буфер сокета или будет подтверждена доставка? Как я могу управлять этим поведением?
Как лучше всего справиться с этим с помощью методов lio_listio
С уважением, Андрей
WSASend()
. Дождитесь соответствующего уведомления (обратного вызова, уведомления о завершении ввода-вывода и т. Д.), Чтобы получить фактический результат передачи. Это не означает, что вы не можете использовать отсутствие копирования, вам просто нужно дождаться завершения передачи, прежде чем повторно использовать этот конкретный буфер. - person André Caron   schedule 17.03.2012send()
. Я не очень хорошо осведомлен о низкоуровневом подтверждении TCP и о том, когда именно ОС сообщает вам, что она отправила данные, поэтому я не уверен, означает ли этот результат, что данные были успешно доставлены (например, подтвержденный прием от партнера). - person André Caron   schedule 19.03.2012