Попробуйте прочитать определенное количество данных из потока перед возвращением.
template<
typename SyncReadStream,
typename Allocator>
std::size_t read(
SyncReadStream & s,
basic_streambuf< Allocator > & b,
boost::system::error_code & ec);
Эта функция используется для чтения определенного количества байтов данных из потока. Звонок будет блокироваться до тех пор, пока не будет выполнено одно из следующих условий:
- Поставляемый буфер полон (то есть достиг максимального размера).
- Произошла ошибка.
Эта операция реализована с точки зрения нуля или более вызовов функции read_some потока.
- s
Поток, из которого следует читать данные. Этот тип должен поддерживать концепцию SyncReadStream.
- b
basic_streambuf
объект, в который будут считываться данные.
- ec
Установить, какая ошибка произошла, если таковая имеется.
Количество переданных байтов.
Эта перегрузка эквивалентна вызову:
boost::asio::read(
s, b,
boost::asio::transfer_all(), ec);