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