asio学习
文章目录
- asio学习
- 1.asio框架介绍
- 1.1 同步和异步
- 1.2 asio框架
- 2.异步网络通信
- 3.HTTP-POST请求
1.asio框架介绍
1.1 同步和异步
在介绍asio之前需要先介绍同步、异步的定义,同步即调用方调用某个函数,在函数没有返回结果之前,调用方就不往下执行,直到返回结果;异步即调用方调用某个函数,调用方不用一直等待函数返回结果,可以继续往下执行。
1.2 asio框架
Proactor模型又叫前摄器或主动器模式,用于实现异步I/O模型,在该模式中,处理器兼任事件分离器,只负责发起异步读写操作。IO操作本身由操作系统完成,事件分离器捕获IO操作完成事件,然后将事件传递给对应处理器。处理器发起一个IO异步操作,事件分离器等待IO完成事件。asio即使用的该异步模型。
2.异步网络通信
2.1 首先对socket服务端同步通信进行回顾,大致流程为创建socket—socket绑定本机IP以及端口—监听端口—接收来自客户端的连接请求—进行数据交互,在这个过程中服务端将阻塞等待客户端的连接,程序将不再继续往下执行。
2.2 在asio框架中,监听端口,接收请求等函数则是异步执行的,程序执行时,程序会在run()函数长时等待,当有事件触发时,再对函数进行回调,当有客户端连接到服务端,async_accept函数将会被触发。
2.3 asio配置网络参数接口如下:
3.HTTP-POST请求
官网的http通信例子只涉及到了GET请求html页面,没有涉及POST请求,对于刚入门的选手来说还是有点着急的,官网案例中并没有判断GET请求,如下图所示,默认对请求的url进行解析并传输指定文件夹中的index.html文件;
上图中request_是一个请求结构体对象,其中成员列表如下,可以通过method进行判断,从而对POST请求进行相应的处理。