Начните асинхронную отправку.
template<
typename ConstBufferSequence,
typename WriteHandler>
void-or-deduced async_send_to(
const ConstBufferSequence & buffers,
const endpoint_type & destination,
WriteHandler handler);
Эта функция используется для асинхронной отправки необработанных данных в указанную удаленную конечную точку. Звонок функции всегда возвращается немедленно.
- buffers
Один или несколько буферов данных для отправки в удаленную конечную точку. Хотя объект буферов может быть скопирован по мере необходимости, право собственности на базовые блоки памяти сохраняется абонентом, который должен гарантировать, что они остаются действительными до тех пор, пока обработчик не будет вызван.
- destination
Удаленная конечная точка, на которую будут отправлены данные. Копии будут сделаны из конечной точки по мере необходимости.
- handler
-
Обработчик должен быть вызван, когда операция отправки завершится. Копии будут сделаны из обработчика по мере необходимости. Функциональная подпись обработчика должна быть:
void handler(
const boost::system::error_code& error,
std::size_t bytes_transferred
);
Независимо от того, выполняется ли асинхронная операция немедленно или нет, обработчик не будет вызываться из этой функции. Призыв обработчика будет выполнен способом, эквивалентным использованиюбустера:Азио:io_service:Пост()
.
Для отправки одного буфера данных используют функциюбуфер
следующим образом:
boost::asio::ip::udp::endpoint destination(
boost::asio::ip::address::from_string("1.2.3.4"), 12345);
socket.async_send_to(
boost::asio::buffer(data, size), destination, handler);
См.буфер
документация для информации об отправке нескольких буферов за один ход, и как ее использовать с массивами, бустер::array или std::vector.