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);
时间: 2024-08-21 20:09:39

Boost.Asio基础(三)的相关文章

Boost.Asio基础(一)

Boost.Asio基础 Network API Boost.Asio 命名空间 boost::asio命名空间包含了Boost Asio库的所有东西,它下面还有一些子命名空间: boost::asio: 它包含了核心的类和功能模块.最重要的类是io_service和streambuf.里面还有一些自由函数,read,read_at,read_util,write等,以及它们的异步的版本. boost::asio::ip: 重要的类有address,endpoint,tcp,udp,icmp和自

Boost.Asio基础(四)

TCP vs UDP vs ICMP 如前所述,对于所有类型的socket,并不是都有同样的成员函数.下面的表格列出了3个socket中存在的成员函数: 名称 TCP UDP ICMP async_read_some Yes - - async_receive_from - Yes Yes async_write_some Yes - - async_send_to - Yes Yes read_some Yes - - receive_rom - Yes Yes write_some Yes

boost asio 学习(三)

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=4 本章节为io_service添加任务,并且区分dispatch与post的区别.如果说io_service是asio库的大脑,那么post与dispatch就是asio库的手和脚. 先看看示例1 #include <boost/asio.hpp> #include <boost/shared_ptr.hp

Boost.Asio基础(五) 异步编程初探

异步编程 本节深入讨论异步编程将遇到的若干问题.建议多次阅读,以便吃透这一节的内容,这一节是对整个boost.asio来说是非常重要的. 为什么需要异步 如前所述,通常同步编程要比异步编程更简单.同步编程下,我们很容易线性地对问题进行考量,函数A调用完,继续执行B,B执行完,继续执行C,以此类推,相对比较直观.而对于异步编程,假设有5个事件,我们很难知道它们具体的执行顺序,你甚至不知道,它到底会不会被执行. 虽然编写异步的程序,很难,但是依然需要使用这种方法.因为服务器程序需要同时并行的处理大量

Boost.Asio基础(二)

套接字 Sockets Boost.Asio有三种类型的Socket类:ip::tcp,ip::udp和ip::icmp,三者都是可扩展的.你可以创建自己的Socket类,虽然做起来稍微复杂了点.假如你真的要这么做,可以参考boost/asio/ip/tcp.hpp,boost/asio/ip/udp.hpp和boost/asio/ip/icmp.hpp.它们都是很小的类,在内部使用typedef关键字. 你可以把ip::tcp,ip::udp和ip::icmp类,作为一个占位符:可以用下面的形

Boost.Asio基础

http://www.voidcn.com/article/p-exkmmuyn-po.html http://www.voidcn.com/article/p-xnxiwkrf-po.html http://www.voidcn.com/article/p-otlhzoos-po.html http://www.voidcn.com/article/p-dikksata-po.html http://www.voidcn.com/article/p-bwmizazs-po.html 原文地址:

boost.asio源码剖析(三) ---- 流程分析

* 常见流程分析之一(Tcp异步连接) 我们用一个简单的demo分析Tcp异步连接的流程: 1 #include <iostream> 2 #include <boost/asio.hpp> 3 4 // 异步连接回调函数 5 void on_connect(boost::system::error_code ec) 6 { 7 if (ec) // 连接失败, 输出错误码 8 std::cout << "async connect error:"

boost asio 学习(七) 网络基础 连接器和接收器(TCP示例)

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=8 7. Networking basics: connectors and acceptors (TCP)我们来学习boost的TCP网络编程.之前的篇章已经介绍了网络系统框架.我们只需要学习网络API函数即可 我们首先学习如何同步的连接主机.我们的代码作为客户端运行,使用tcp::socket对象.tcp::s

Boost.Asio技术文档

Christopher Kohlhoff Copyright ? 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完