asio是一个建立在Boost所提供的相关组件之上的异步的网络库,可以运行在Win/Linux/Unix等各种平台之上。不过随着C++11的发布,其对于Boost的依赖也越来越少,作者又做了一个不依赖于boost的版本。

虽然网络上关于C++网络编程的框架和库的轮子多的一比,但没有一个比这个更通用,比这个更实用。 有些只能在linux上运行,比如muduo,有的依赖库非常多,比如360的evpp,有的只偏重于某一方面,不通用,比如不支持ssl。好用的大概只有asio这一个了。可惜关于asio的学习资料并不是特别多,给学习带来了一些不便。而且asio这些年开发比较快,有些东西也在一直变化。

不过好在还是有一些资料可以借鉴,基本接口也比较稳定。

下面我介绍一下学习的一些路径和资料。

asio下载地址:

Asio C++ Library

文档:

Documentation

一、基本类学习

首先要了解内部io_context的使用,多线程与io_context如何配合。

run(), poll(), post()具体是什么意义。

worker如何使用

c++11 的bind是怎么工作的,只需要了解具体如何用,不用了解底层实现。

二、socket类如何读写

同步与异步函数的使用。

acceptor.accept()

acceptor.async_accept()

sock_.connect()

sock_.async_connect()

三、基本的例子

src/examples目录下, cpp11目录下比较多,基本上几个一看就明白一般的server和client的逻辑

四、真实程序

例子看过后就看看真正的用asio写的程序

1.用asio写的

GitHub - trojan-gfw/trojan: An unidentifiable mechanism that helps you bypass GFW.

用到ssl里面的许多功能。

推荐图书

图书1

Boost.Asio C++ Network Programming Cookbook

https://github.com/Belgorodsky/BoostAsioCppNetworkProgrammingCookbookDmitroRadchuk

pdf链接Boost.AsioC++NetworkProgrammingCookbook2016新书无水印pdf0分_boost-C++文档类资源-CSDN下载

图书2

讲解asio中的基本类的使用

asio 网络编程第二版英文原版pdf,这个文档做的比较好,标签比较全。

boostasioc++networkprogramming2nd-C++文档类资源-CSDN下载

如何学习和使用asio 网络库相关推荐

  1. [Boost基础]并发编程——asio网络库——定时器deadline_timer

    asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求使用多线程和锁定,有些的避免了多线程编程带来的诸多有害副作用(如条件竞争 ...

  2. 基于事件驱动的编程模型(C++asio网络库相关)

    基于事件驱动的编程模型 1.reactor模式:lighttpd,libevent,libev,poco,redis 2.Proactor模式:Asio,locp rector模式简单一点 react ...

  3. boost库中优秀的网络库asio

    文章目录 一.须知 二.ASIO 三.我们将从研究同步操作开始 四.当使用异步操作时,会发生不同的事件序列 五.Proactor模型 六.常用内容 七.C++ 建立本地网络服务器 (Boost.Asi ...

  4. muduo网络库学习(八)事件驱动循环线程池EventLoopThreadPool

    muduo是支持多线程的网络库,在muduo网络库学习(七)用于创建服务器的类TcpServer中也提及了TcpServer中有一个事件驱动循环线程池,线程池中存在大量线程,每个线程运行一个Event ...

  5. muduo网络库学习(七)用于创建服务器的类TcpServer

    目前为止,涉及到的绝大多数操作都没有提及线程,EventLoop,Poller,Channel,Acceptor,TcpConnection,这些对象的执行都是在单独线程完成,并没有设计多线程的创建销 ...

  6. muduo网络库学习(四)事件驱动循环EventLoop

    muduo的设计采用高并发服务器框架中的one loop per thread模式,即一个线程一个事件循环. 这里的loop,其实就是muduo中的EventLoop,所以到目前为止,不管是Polle ...

  7. ASIO 腾空出世 (那些年我们追过的网络库.PartII)

    ASIO 腾空出世 在地球最大的岛上,另一位少年开始拜读 ACE 的大作.那时候,没有 libuv 没有 libev 更没有 libevent . 有的只是 ACE. 然而这个南方小国的少年没有跟风陷 ...

  8. 《Linux多线程服务端编程:使用muduoC++网络库》学习笔记

    文章目录 第1章 线程安全的对象生命期管理 1.1 当析构函数遇到多线程 1.1.1 线程安全的定义 1.1.3 线程安全实例 1.2 对象的创建很简单 1.3 销毁很难 1.4 线程安全的Obser ...

  9. 【博客410】Go net网络库学习

    内容:记录学习go net网络库 服务端类型接口: 1. 解析地址// 解析TCP地址 func ResolveTCPAddr(network, address string) (*TCPAddr, ...

  10. muduo网络库学习总结:基本架构及流程分析

    muduo网络库学习:基本架构及流程分析 基本架构 Basic Reactor Mutiple Reactor + ThreadPool muduo库的基本使用 基本结构介绍 EventLoop类 P ...

最新文章

  1. 【Python 小知识】[:-1] 和 [::-1]
  2. ASP.NET中实现模版的动态加载
  3. Zend Studio使用教程之升级Zend Studio(1/3)
  4. LCD1602(以51单片机为例)
  5. 微软将为Linux 操作系统带来TEE的支持:TEE(Trusted Execution Environment,可信执行环境)
  6. S太赞了!大佬竟然用ELK搭建起了支撑TB级的日志监控系统...
  7. Microsoft.ACE.OLEDB.12.0 读取混合列
  8. spring-05 AOP
  9. 如何做到秒级扩容1000加业务节点
  10. 软件测试预演环境,什么是软件测试用例预演 有何优点?-软件水平考试-考试吧...
  11. ASP.NET 发送电子邮件 smtp
  12. Autumn中文文档0:为什么使用Autumn
  13. JavaScript 销毁对象
  14. PageHelper.startPage与PageHelper.offsetPage区别
  15. 一个简单的python爬虫程序
  16. 暴力破解键盘上所有组合的密码需要多久?
  17. 前端开发规范和开发文档的书写规范
  18. 华为OD机试 - 斗地主之顺子
  19. html下拉框如何加边框颜色,css如何加边框颜色?
  20. JAVA毕业设计服装批发进销存系统计算机源码+lw文档+系统+调试部署+数据库

热门文章

  1. linux环境下pandas库的安装,Pandas库的基本使用 pip安装 Series DataFrame
  2. 海思HI3798M GPIO和PWM操作
  3. 徐培成电商项目-徐培成-专题视频课程
  4. matlab符号运算报错,matlab符号运算符
  5. mysql 导出表结构或表数据的操作
  6. Linux查找大文件命令
  7. 计算机教学能力大赛实施报告模板,教学能力比赛教学实施报告现场汇报PPT模板-橙色主题.pptx...
  8. thymeleaf实现分页
  9. dx逆向建模步骤_初级反求逆向建模(一)
  10. 虚拟机VMware安装PhoenixOS(凤凰OS)