asio是一个建立在Boost所提供的相关组件之上的异步的网络库,可以运行在Win/Linux/Unix等各种平台之上。不过随着C++11的发布,其对于Boost的依赖也越来越少,作者又做了一个不依赖于boost的版本。
虽然网络上关于C++网络编程的框架和库的轮子多的一比,但没有一个比这个更通用,比这个更实用。 有些只能在linux上运行,比如muduo,有的依赖库非常多,比如360的evpp,有的只偏重于某一方面,不通用,比如不支持ssl。好用的大概只有asio这一个了。可惜关于asio的学习资料并不是特别多,给学习带来了一些不便。而且asio这些年开发比较快,有些东西也在一直变化。
不过好在还是有一些资料可以借鉴,基本接口也比较稳定。
下面我介绍一下学习的一些路径和资料。
asio下载地址:
文档:
一、基本类学习
首先要了解内部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下载