Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Класс boost::asio::ip::tcp::socket (обычно сокращённо tcp::socket) предоставляет множество методов для работы с TCP-соединениями. Он реализован как специализация шаблона basic_stream_socket для протокола TCP.
- Ниже перечислены основные методы tcp::socket с кратким описанием:
- Метод / Функция Описание
- Конструкторы Создают сокет, обычно принимают io_context или io_service.
- open(protocol_type) Открыть сокет с указанным протоколом (обычно TCP).
- close(error_code&) Закрыть сокет.
- is_open() Проверить, открыт ли сокет.
- bind(endpoint, error_code&) Привязать сокет к локальному адресу и порту.
- connect(endpoint, error_code&) Синхронно подключиться к удалённому адресу.
- async_connect(endpoint, handler) Асинхронно подключиться с вызовом обработчика по завершении.
- shutdown(shutdown_type, error_code&) Отключить передачу данных (полностью или частично).
- local_endpoint(error_code&) Получить локальный адрес и порт.
- remote_endpoint(error_code&) Получить удалённый адрес и порт.
- read_some(mutable_buffer, error_code&) Синхронно прочитать доступные данные.
- async_read_some(mutable_buffer, handler) Асинхронно прочитать доступные данные.
- write_some(const_buffer, error_code&) Синхронно записать данные.
- async_write_some(const_buffer, handler) Асинхронно записать данные.
- cancel(error_code&) Отменить все асинхронные операции.
- set_option(socket_option, error_code&) Установить опцию сокета (например, reuse_address).
- get_option(socket_option, error_code&) Получить опцию сокета.
- io_control(io_control_command, error_code&)
- ............................................................
- boost::asio::socket_base::reuse_address Позволяет повторно использовать адрес (SO_REUSEADDR).
- boost::asio::socket_base::linger Опция задержки закрытия сокета (SO_LINGER).
- boost::asio::socket_base::keep_alive Включение TCP Keep-Alive.
- boost::asio::socket_base::broadcast Разрешение отправки широковещательных сообщений (для UDP).
- boost::asio::socket_base::debug Включение режима отладки сокета.
- boost::asio::socket_base::dont_route Запрет маршрутизации пакетов (SO_DONTROUTE).
- boost::asio::socket_base::send_buffer_size Размер буфера отправки (SO_SNDBUF).
- boost::asio::socket_base::receive_buffer_size Размер буфера приёма (SO_RCVBUF).
- boost::asio::socket_base::send_low_watermark Минимальный объём данных для отправки.
- boost::asio::socket_base::receive_low_watermark Минимальный объём данных для приёма.
- boost::asio::ip::tcp::no_delay Отключение алгоритма Нейгла (TCP_NODELAY).
- Пример установки опции
- cpp
- boost::asio::ip::tcp::socket socket(io_context);
- // Включаем повторное использование адреса
- boost::asio::socket_base::reuse_address option(true);
- socket.set_option(option);
- // Устанавливаем размер буфера приёма
- boost::asio::socket_base::receive_buffer_size recv_buffer_size(8192);
- socket.set_option(recv_buffer_size);
- // Отключаем алгоритм Нейгла
- boost::asio::ip::tcp::no_delay no_delay_option(true);
- socket.set_option(no_delay_option);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement