Socket控制
下面的函数进行处理一些高级的socket选项:
- get_io_service():返回io_service实例
- get_option(option):返回socket option对象
- set_option(option):设置socket 选项
- io_control(cmd):在socket上执行I/O命令
以下是可以读取和设置的socket选项:
名称 | 描述 | 类型 |
---|---|---|
broadcast | 为真,允许广播消息 | bool |
debug | 为真,启用socket级别的调试 | bool |
do_not_route | 为真,避免路由,并且只使用本地接口 | bool |
enable_connection_abort | 为真,在accept()时将允许报告连接被终止 | bool |
keep_alive | 为真,发送保持连接 | bool |
linger | 为真,如果有没有发送的数据,在close之后,数据依然保留 | bool |
receive_buffer_size | socket接收数据的缓冲区尺寸 | int |
receive_low_watermark | 设置处理socket输入的最小的字节数 | int |
reuse_address | 为真,socket可以被绑定到一个已经使用的地址 | bool |
send_buffer_size | socket的发送缓冲区尺寸 | int |
send_low_watermark | 处理socket发送的最小字节数 | int |
ip::v6_only | 为真,只允许ipv6通信 | bool |
例子:
ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 80);
ip::tcp::socket sock(service);
sock.connect(ep);
//TCP可以重用地址
ip::tcp::socket::reuse_address ra(true);
sock.set_option(ra);
//获取socket的接收缓冲区大小
ip::tcp::socket::receive_buffer_size rbs;
sock.get_option(rbs);
std::cout<<rbs.value()<<std::endl;
//设置socket的缓冲区大小为8192
ip::tcp::socket::send_buffer_size sbs(8192);
sock.set_option(sbs);
时间: 2024-11-05 13:47:32