async_receive
- это функция, которая просто получает в буфер, но может не получить запрашиваемую сумму. (Это будет равно или меньше, никогда больше.)
async_read
, однако, всегда получит запрошенную сумму, как указано:
Эта функция используется для асинхронного чтения определенного количества байтов данных из потока. Вызов функции всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока не будет выполнено одно из следующих условий:
- Поставленные буферы заполнены. То есть переданные байты равны сумме размеров буфера.
- Произошла ошибка.
Единственная вещь, на которой страница немного расплывчата, - это то, что делает async_read
, если не получает столько байтов, и соединение закрывается изящно. (Это считается «ошибкой»?) Вероятно, это можно определить с помощью быстрого теста. (async_receive
, однако, просто даст вам то, что он получил.)