Из этого обсуждения я понимаю, что boost :: asio :: async_write записывает данные только в буферы ядра. Это не означает, что узел получил данные. Но если я отправляю большие пакеты размером, скажем, 200000 байтов каждый, а затем я тяну сетевой кабель, чтобы внезапно разорвать соединение. Будет ли по-прежнему составляться отчет о 200000 байтах, записанных в буферах ядра для каждого async_write
? Мое тестирование говорит, что это не так. Он отказывается от большого буфера, такого как 200000 байтов, и не сообщает обо всех отправленных байтах. Но если это небольшой буфер, такой как 30-40 байтов, он продолжает сообщать, хорошо?
Вопрос:
Основная задача постановки этого вопроса: Существует ли базовый размер буфера, который заполняется в одной точке для async_write
до Скажите, что теперь его больше нельзя записывать, потому что ранее запланированные данные не вышли? Если да, то каков размер этого основного буфера? Могу ли я запросить его у boost::asio::ip::tcp::socket
?