asio学习

asio学习

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请求进行相应的处理。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Boost.Asio是一种功能强大的C++网络编程库,其中包含了HTTP Server框架。学习Boost.AsioHTTP Server模块可以帮助我们了解如何使用C++编写一个高效且稳定的HTTP服务器。 开始学习Boost.AsioHTTP Server模块之前,我们首先需要了解HTTP协议的基本知识。HTTP协议是一种用于客户端和服务器之间进行通信的协议,我们在这个基础上构建HTTP服务器。然后,我们需要了解Boost.Asio库的基本概念和用法,比如异步操作、套接字和流等。 在学习Boost.AsioHTTP Server模块时,我们需要了解以下几个方面: 1. 创建一个TCP服务器:我们需要使用Boost.Asio库提供的TCP套接字来创建一个服务器,监听指定的端口,并能够处理来自客户端的连接请求。 2. 解析HTTP请求:服务器接收到客户端发送的请求后,需要解析HTTP报文,将请求方法、路径和其他相关信息提取出来,以便后续处理。 3. 处理HTTP请求:服务器根据解析出的请求信息,执行相应的处理逻辑,并生成HTTP响应报文,然后通过TCP连接将响应发送给客户端。 4. 异步操作管理:Boost.Asio库的一个重要特性是提供了非阻塞的异步操作。我们需要了解如何使用异步操作来实现高性能的HTTP服务器,如异步读取请求、异步处理请求和异步发送响应等。 5. 错误处理和异常处理:在编写网络程序时,错误处理非常重要。我们需要了解Boost.Asio库提供的错误处理机制,以及如何正确处理和恢复可能发生的异常。 通过学习Boost.AsioHTTP Server模块,我们可以提高我们的网络编程技能,了解HTTP协议的工作原理,以及如何使用C++编写高性能的HTTP服务器。这对于开发Web应用、服务端应用程序等领域都非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值