当前位置: 首页 > news >正文

BOOST.ASIO源码剖析(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 前言

源码之前,了无秘密。
                                                       ——侯捷

      Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。


      boost.asio是Boost库中非常著名的I/O组件,是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型。其在性能、移植性、扩展性等方面均为人称道,甚至被很多业内人士称为“网络神器”。asio是目前唯一有希望进入C++标准库以弥补标准库在网络方面的缺失的C++网络库,因此对asio的学习在某种意义上可以说是学习C++网络编程的必修课。

      当前网络上从用户角度介绍asio的文献很多也很完善,所以本文决定另辟蹊径,从asio源码角度出发,由内而外、深入浅出地剖析asio的架构和设计理念,将asio的一切秘密呈现在读者眼前。

      本文适合已有较完善的C++基础知识、具备一定程度的泛型技术和面向对象技术、并对boost.asio有一定的了解的读者。

      首先,本文先从面向对象的角度对asio的架构开始剖析,由粗至细。先让读者对asio有一个高屋建瓴的认识,再逐步细化,最终透彻地了解asio的架构。
      然后,本文以Windows平台下的Tcp协议为例,以跟踪流程的方式探究asio的运作原理。(如果作者时间充足或有读者愿意共享,后续会给出其他平台下的流程)
      再次,本文从泛型编程的角度对asio的架构做进一步剖析。在此,读者将会看到asio中的各个泛型组件、泛型约束/概念(concepts)、扩展方向与方法、以及泛型技术与面向对象技术的完美结合。
      最后,本文从用户的角度分析asio的优缺点,再分享一个基于asio封装的开源网络库<asioex>,力求扬长避短、充分发挥asio的强大威力。

转载于:https://my.oschina.net/u/1426828/blog/1793938

相关文章:

  • iis web.config 配置示例
  • 不要仅为85%的用户设计:关注无障碍设计
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • Oracle安装时,已有oracle用户,将用户添加到oinstall和dba用户组
  • freenom域名解析与次级域名
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端CORS请求梳理
  • osquery简单试用
  • 关于Java中分层中遇到的一些问题
  • 156:Ananagrams
  • 区块链技术
  • 浅度理解NodeJS的HTTP模块
  • Git的本地仓库与GitHub的远程仓库
  • haproxy+pacemaker高可用负载均衡
  • 剖析RAC中的@weakify、@strongify
  • [译]如何构建服务器端web组件,为何要构建?
  • Git同步原始仓库到Fork仓库中
  • JavaScript设计模式之工厂模式
  • spring boot下thymeleaf全局静态变量配置
  • spring security oauth2 password授权模式
  • TCP拥塞控制
  • ViewService——一种保证客户端与服务端同步的方法
  • Xmanager 远程桌面 CentOS 7
  • 编写符合Python风格的对象
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 什么软件可以提取视频中的音频制作成手机铃声
  • MyCAT水平分库
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #include<初见C语言之指针(5)>
  • (33)STM32——485实验笔记
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (转)h264中avc和flv数据的解析
  • .Net 知识杂记
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net接口调试与案例
  • :=
  • @Import注解详解
  • []sim300 GPRS数据收发程序
  • [04]Web前端进阶—JS伪数组
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [CISCN2019 华东南赛区]Web11
  • [CTF]php is_numeric绕过
  • [flask]http请求//获取请求头信息+客户端信息
  • [GXYCTF2019]BabySQli1
  • [GYCTF2020]Ez_Express
  • [hive] posexplode函数
  • [HTTP]HTTP协议的状态码