Boost.Asio C++ 网络编程之一:什么是Boost.Asio?

引言

文章的内容是翻译 《Boost.Asio C++ Network Programming》这本书。
编译IDE环境是 vs2017

什么是Boost.Asio?

简单来说,Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。

关于网络处理已经有很多解决方案,但是Boost.Asio是目前为止最优的方案。它在2005年就被包含进Boost,然后被大量Boost的用户测试并使用在许多项目中,比如:Remobo(http://www.remobo.com),可以让你创建你自己的即时私有网络(IPN);libtorrent(http://www.rasterbar.com/products/libtorrent)),一个用于实现比特流客户端的库;PokerTH (http://www.pokerth.net),一个支持LAN和互联网对战的纸牌游戏。

Boost.Asio在网络通信、COM串行端口和文件上成功地抽象了输入输出的概念。你可以基于这些进行同步或者异步的输入输出编程。

read(stream, buffer [, extra options])
async_read(stream, buffer [, extra options], handler)
write(stream, buffer [, extra options])
async_write(stream, buffer [, extra options], handler)

从前面的代码片段可以看出,这些函数支持传入包含任意内容(我们能进行读写的不仅仅是socket)的流实例。

作为一个跨平台的库,Boost.Asio可以在大多数操作系统上使用。能同时支持数千个并发的连接。其网络部分的灵感来源于伯克利软件分发(BSD)socket,它提供了一套可以支持传输控制协议(TCP)socket、用户数据报协议(UDP)socket和Internet控制消息协议(IMCP)socket的API,而且如果有需要,你可以对其进行扩展以支持自己的协议。

依赖

  • Boost.Asio依赖于如下的库:
  • Boost.System:这个库为Boost库提供操作系统支持
  • Boost.Regex:使用这个库(可选的)以便你重载read_until()或者async_read_until()时使用boost::regex参数。
  • Boost.DateTime:这个库(可选的)为Boost.Asio中的计时器功能提供支持。
  • OpenSSL:这个库(可选的)为Boost.Asio中的SSL功能提供支持。

重要的宏

如果设置了

BOOST_ASIO_DISABLE_THREADS

不管你是否在编译Boost的过程中加入了线程支持,Boost.Asio中的线程支持都会失效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值