asio学习


文章目录

  • asio学习
  • 1.asio框架介绍
  • 1.1 同步和异步
  • 1.2 asio框架
  • 2.异步网络通信
  • 3.HTTP-POST请求


1.asio框架介绍

1.1 同步和异步

在介绍asio之前需要先介绍同步、异步的定义,同步即调用方调用某个函数,在函数没有返回结果之前,调用方就不往下执行,直到返回结果;异步即调用方调用某个函数,调用方不用一直等待函数返回结果,可以继续往下执行。

1.2 asio框架

使用原生axios 原生asio什么意思_使用原生axios

Proactor模型又叫前摄器或主动器模式,用于实现异步I/O模型,在该模式中,处理器兼任事件分离器,只负责发起异步读写操作。IO操作本身由操作系统完成,事件分离器捕获IO操作完成事件,然后将事件传递给对应处理器。处理器发起一个IO异步操作,事件分离器等待IO完成事件。asio即使用的该异步模型。

2.异步网络通信

2.1 首先对socket服务端同步通信进行回顾,大致流程为创建socket—socket绑定本机IP以及端口—监听端口—接收来自客户端的连接请求—进行数据交互,在这个过程中服务端将阻塞等待客户端的连接,程序将不再继续往下执行。

2.2 在asio框架中,监听端口,接收请求等函数则是异步执行的,程序执行时,程序会在run()函数长时等待,当有事件触发时,再对函数进行回调,当有客户端连接到服务端,async_accept函数将会被触发。

使用原生axios 原生asio什么意思_post_02

2.3 asio配置网络参数接口如下:

使用原生axios 原生asio什么意思_asio_03

3.HTTP-POST请求

官网的http通信例子只涉及到了GET请求html页面,没有涉及POST请求,对于刚入门的选手来说还是有点着急的,官网案例中并没有判断GET请求,如下图所示,默认对请求的url进行解析并传输指定文件夹中的index.html文件;

使用原生axios 原生asio什么意思_post_04

上图中request_是一个请求结构体对象,其中成员列表如下,可以通过method进行判断,从而对POST请求进行相应的处理。

使用原生axios 原生asio什么意思_使用原生axios_05