Получите некоторые данные на розетке.
template<
typename MutableBufferSequence>
std::size_t receive(
const MutableBufferSequence & buffers,
socket_base::message_flags in_flags,
socket_base::message_flags & out_flags);
Эта функция используется для приема данных на секвенированный пакет сокет. Функциональный вызов блокируется до тех пор, пока данные не будут получены успешно или пока не произойдет ошибка.
- buffers
Один или несколько буферов, в которые будут поступать данные.
- in_flags
Флаги, указывающие, как должен быть сделан звонок.
- out_flags
После завершения приема вызова содержит флаги, связанные с полученными данными. Например, если бит<socket_base::message_end_of_record
>установлен, то полученные данные обозначают конец записи.
Количество полученных байтов.
- boost::system::system_error
Выброшен на провал. Код ошибки<boost::asio::error::eof
>указывает на то, что соединение было закрыто сверстником.
Операция приема не может принимать все запрашиваемое количество байтов. Подумайте об использовании функции<read
>, если вам нужно убедиться, что запрошенный объем данных считывается до завершения операции блокировки.
Для получения в единый буфер данных используют функцию<buffer
>:
socket.receive(boost::asio::buffer(data, size), 0, out_flags);
См. документацию<buffer
>для информации о приеме в несколько буферов за один ход, и как использовать ее с массивами, бустер::array или std::vector.