Advertisement
AlexNovoross87

tcp::socket

Jun 2nd, 2025
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. Класс boost::asio::ip::tcp::socket (обычно сокращённо tcp::socket) предоставляет множество методов для работы с TCP-соединениями. Он реализован как специализация шаблона basic_stream_socket для протокола TCP.
  2.  
  3. Ниже перечислены основные методы tcp::socket с кратким описанием:
  4.  
  5. Метод / Функция Описание
  6. Конструкторы Создают сокет, обычно принимают io_context или io_service.
  7. open(protocol_type) Открыть сокет с указанным протоколом (обычно TCP).
  8. close(error_code&) Закрыть сокет.
  9. is_open() Проверить, открыт ли сокет.
  10. bind(endpoint, error_code&) Привязать сокет к локальному адресу и порту.
  11. connect(endpoint, error_code&) Синхронно подключиться к удалённому адресу.
  12. async_connect(endpoint, handler) Асинхронно подключиться с вызовом обработчика по завершении.
  13. shutdown(shutdown_type, error_code&) Отключить передачу данных (полностью или частично).
  14. local_endpoint(error_code&) Получить локальный адрес и порт.
  15. remote_endpoint(error_code&) Получить удалённый адрес и порт.
  16. read_some(mutable_buffer, error_code&) Синхронно прочитать доступные данные.
  17. async_read_some(mutable_buffer, handler) Асинхронно прочитать доступные данные.
  18. write_some(const_buffer, error_code&) Синхронно записать данные.
  19. async_write_some(const_buffer, handler) Асинхронно записать данные.
  20. cancel(error_code&) Отменить все асинхронные операции.
  21. set_option(socket_option, error_code&) Установить опцию сокета (например, reuse_address).
  22. get_option(socket_option, error_code&) Получить опцию сокета.
  23. io_control(io_control_command, error_code&)
  24.  
  25. ............................................................
  26. boost::asio::socket_base::reuse_address Позволяет повторно использовать адрес (SO_REUSEADDR).
  27. boost::asio::socket_base::linger Опция задержки закрытия сокета (SO_LINGER).
  28. boost::asio::socket_base::keep_alive Включение TCP Keep-Alive.
  29. boost::asio::socket_base::broadcast Разрешение отправки широковещательных сообщений (для UDP).
  30. boost::asio::socket_base::debug Включение режима отладки сокета.
  31. boost::asio::socket_base::dont_route Запрет маршрутизации пакетов (SO_DONTROUTE).
  32. boost::asio::socket_base::send_buffer_size Размер буфера отправки (SO_SNDBUF).
  33. boost::asio::socket_base::receive_buffer_size Размер буфера приёма (SO_RCVBUF).
  34. boost::asio::socket_base::send_low_watermark Минимальный объём данных для отправки.
  35. boost::asio::socket_base::receive_low_watermark Минимальный объём данных для приёма.
  36. boost::asio::ip::tcp::no_delay Отключение алгоритма Нейгла (TCP_NODELAY).
  37. Пример установки опции
  38. cpp
  39. boost::asio::ip::tcp::socket socket(io_context);
  40.  
  41. // Включаем повторное использование адреса
  42. boost::asio::socket_base::reuse_address option(true);
  43. socket.set_option(option);
  44.  
  45. // Устанавливаем размер буфера приёма
  46. boost::asio::socket_base::receive_buffer_size recv_buffer_size(8192);
  47. socket.set_option(recv_buffer_size);
  48.  
  49. // Отключаем алгоритм Нейгла
  50. boost::asio::ip::tcp::no_delay no_delay_option(true);
  51. socket.set_option(no_delay_option);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement