Получите дейтаграмму с конечной точкой отправителя.
template<
    typename MutableBufferSequence>
std::size_t receive_from(
    const MutableBufferSequence & buffers,
    endpoint_type & sender_endpoint);
Эта функция используется для получения дейтаграммы. Функциональный вызов блокируется до тех пор, пока данные не будут получены успешно или не произойдет ошибка.
- buffers
 
Один или несколько буферов, в которые будут поступать данные.
 
- sender_endpoint
 
Объект конечной точки, который получает конечную точку удаленного отправителя дейтаграммы.
 
 
Количество полученных байтов.
- boost::system::system_error
 
Выброшен на провал.
 
 
Для получения в единый буфер данных используют функцию буфер  следующего содержания:
boost::asio::ip::udp::endpoint sender_endpoint;
socket.receive_from(
    boost::asio::buffer(data, size), sender_endpoint);
См. документацию buffer для информации о приеме в несколько буферов за один ход, и как использовать ее с массивами, нарастить::array или std::vector.