下面的函数进行处理一些高级的socket选项:
以下是可以读取和设置的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);
原文地址:http://blog.csdn.net/shangguanwaner/article/details/44318013