Увеличить asio асинхронный обработчик в TCP - PullRequest
0 голосов
/ 25 мая 2019

Может быть, это очень простой вопрос, но я не нашел ответа на него. Я использую класс TSCP Boost Asios для обработки простого протокола байтов. Я делаю async_read_some, и обработчик делает некоторую работу. После того, как обработчик был завершен, я запускаю другой async_read_some. Давайте предположим, что этот обработчик выполняет много вычислений. Есть ли вероятность того, что входящие данные между обработчиком и следующим вызовом async_read_some будут потеряны?

1 Ответ

1 голос
/ 26 мая 2019

Нет, ваша ОС будет продолжать получать данные, пока ее приемные буферы / окно приема TCP не будут заполнены.Как только буфер приема заполнен, управление потоком данных TCP будет следить за тем, чтобы отправитель не отправлял больше данных, чем может получить получатель, и такие данные не будут потеряны.

См. https://www.brianstorti.com/tcp-flow-control/хорошее объяснение / пример.

https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Flow_control

...