Boost.Asio基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boost.Asio基础相关的知识,希望对你有一定的参考价值。
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);
以上是关于Boost.Asio基础的主要内容,如果未能解决你的问题,请参考以下文章
在 io_service.stop() 之后等待 boost asio 的未来将永远持续下去
Boost::Asio : io_service.run() vs poll() 或者我如何在主循环中集成 boost::asio