本文共 910 字,大约阅读时间需要 3 分钟。
asio库基于操作系统提供的异步机制。主要关注于网络通信方面。封装了socket API,支持TCP,UDP,ICMP等网络通信协议。
asio的异步操作并不局限于网络编程,还支持串口读写,定时器,SSL等功能,使用asio不需要编译,但需要依赖其他boost库组件,最基本的是boost.system
和boost.datetime库,用来提供系统错误和时间支持。其他可选的库还有regex,thread,serialization。
核心类是io_service
同步模式下:程序发起一个IO操作,向io_service提交请求,io_service把操作转交给操作系统,同步等待当IO操作完成,
系统通知io_service,然后io_service再把结果发送给程序,完成整个同步流程。与多线程的join()等待方式很相似。
异步模式下:程序除了要发起IO操作,还要定义一个用于回调的完成处理函数,io_service同样把IO操作转交给操作系统,但他不同步等待,而是
立即返回。
代码举例:
同步操作:
#include异步操作:#include using namespace boost::asio;using namespace std;int main(){ io_service ios; deadline_timer t(ios,boost::posix_time::seconds(2)); cout< <
#include#include using namespace boost;using namespace boost::asio;using namespace std;void print(const system::error_code&){ cout<<"I think I will change the world,but\n\ finally the world changes me"<
网络通信:
程序下载链接地址:
。。。。。。。
转载地址:http://njumi.baihongyu.com/