Начните асинхронный прием на подключенном розетке.
template<
    typename MutableBufferSequence,
    typename ReadHandler>
void-or-deduced async_receive(
    const MutableBufferSequence & buffers,
    ReadHandler handler);
Эта функция используется для асинхронного получения данных из сокета Datagram. Функция вызова всегда возвращается немедленно.
- buffers
 
Один или несколько буферов, в которые будут получены данные. Хотя объект буферов может быть скопирован по мере необходимости, владение базовыми блоками памяти сохраняется звонящим, что должно гарантировать, что они остаются в силе до тех пор, пока обработчик не будет назван.
 
- handler
 
- 
Обработчик должен быть вызван, когда завершится приемная операция. Копии будут сделаны из обработчика по мере необходимости. Функция подписи обработчика должна быть:
void handler(
  const boost::system::error_code& error, 
  std::size_t bytes_transferred           
);
Независимо от того, завершает ли асинхронная операция немедленно или нет, обработчик не будет ссылаться в рамках этой функции. Призыв обработчика будет выполнен таким образом, как использование boost::asio::io_service::post().
 
 
Операция async_receive может использоваться только с подключенным разъемом. Используйте функцию async_receive_from для получения данных на неподключенном сокете Datagram.
Чтобы получить в один буфер данных, используйте функцию buffer следующим образом:
socket.async_receive(boost::asio::buffer(data, size), handler);
См. buffer документацию для информации о получении в нескольких буферах за один ход, и как использовать ее с массивами, увеличить::array или std::vector.