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

Boost Asio总结异步通信

boost::asio::io_service类

boost::asio::io_service 运行方法阻塞/解除阻塞时感到困惑

Boost Asio总结 io_service