socket的一些option
在 Boost.Asio 中,set_option 可以设置一系列套接字参数,以控制套接字的行为。这些参数通过不同的选项类来设置,每个选项类通常对应一个具体的网络配置选项。常用的选项包括控制数据包传输、端口复用、缓冲区大小等。
以下是一些常用的 set_option 参数及其作用:
1. 通用套接字选项
这些选项适用于所有套接字类型(如 TCP 和 UDP)。
boost::asio::socket_base::reuse_address
允许重复绑定地址,特别适用于多播、广播应用程序或在服务器重启时需要重复绑定端口的场景。
boost::asio::socket_base::linger
控制套接字关闭时是否立即断开连接,或在指定超时内继续发送未完成的数据。可以设置是否启用 linger 和超时时间。
boost::asio::socket_base::send_buffer_size
设置发送缓冲区大小,以控制每次传输的数据量。
boost::asio::socket_base::receive_buffer_size
设置接收缓冲区大小,以控制每次接收的数据量。
boost::asio::socket_base::keep_alive
启用或禁用 TCP Keep-Alive 功能,用于检查连接是否仍然有效。
boost::asio::socket_base::broadcast
启用或禁用 UDP 广播,允许发送广播消息。仅适用于 UDP 套接字。
2. TCP 特定选项
TCP 协议的选项可以控制连接行为及数据传输方式。
boost::asio::ip::tcp::no_delay
启用或禁用 Nagle 算法。Nagle 算法通过合并小数据包减少网络传输次数,但会引入延迟。禁用 Nagle 算法(no_delay 设置为 true)适合低延迟应用,如实时通信。
boost::asio::ip::tcp::socket::linger
设置 TCP 套接字的 linger 选项,使套接字关闭时等待一段时间以传输未完成的数据。
3. 多播选项
这些选项适用于多播通信,主要用于 UDP 套接字。
boost::asio::ip::multicast::join_group
将套接字加入一个多播组,以接收来自该组的消息。
boost::asio::ip::multicast::leave_group
将套接字从多播组中移除,不再接收该组的消息。
boost::asio::ip::multicast::outbound_interface
设置多播发送的网络接口,指定从哪个网络接口发送多播消息。
boost::asio::ip::multicast::enable_loopback
启用或禁用多播消息的回环。如果启用,则本机发送的多播消息会被本机接收。
boost::asio::ip::multicast::hops
设置多播数据包的跳数限制(TTL),即数据包可以穿越的路由器数,防止数据包在网络中无限传播。