博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++boost中的asio介绍
阅读量:4213 次
发布时间:2019-05-26

本文共 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/

你可能感兴趣的文章
Oracle RAC Failover 详解
查看>>
批处理 自动修改 IP 地址
查看>>
Oracle RAC LoadBalance
查看>>
v$sql,v$sqlarea,v$sqltext 和 v$sql_plan 说明
查看>>
ORA-31623 When Submitting a Datapump Job [ID 308388.1]
查看>>
Oracle SYSAUX 表空间 说明
查看>>
RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法
查看>>
On RAC, expdp Removes the Service Name [ID 1269319.1]
查看>>
Important Changes to Oracle Database Patch Sets Starting With 11.2.0.2 [ID 1189783.1]
查看>>
Oracle RAC 平台下 Patch 安装与卸载 步骤
查看>>
Oracle Database 11gR1 和 10gR2 ASM Best Practices 说明文档
查看>>
ASM Concepts Quick Overview [ID 1086199.1]
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
PowerDesigner 企业架构模型 ( EAM ) 说明
查看>>
PowerDesigner 正向工程 和 逆向工程 说明
查看>>
PowerDesigner 模型文档 说明
查看>>
PowerDesigner 系列 小结
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
Oracle sessions,processes 和 transactions 参数 关系 说明
查看>>
RMAN 备份报错 RMAN-06207 RMAN-06208 解决方法
查看>>