基于C++的Linux轻量级Web服务器

HarmonyOS

  《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的C++ Web 服务器——TinyWebServer。

  TinyWebServer是一个开源的C++轻量级Web服务器,该项目非常适合初学者快速实践网路编程,搭建属于自己的服务器。

  特性

  使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机解析HTTP请求报文,解析GET和POST请求访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件实现同步/异步日志系统,记录服务器的运行状态经Webbench压力测试可以实现上万的并发连接数据交换框架

  Demo演示

  注册演示

  登录演示

  请求图片文件演示(6M)

  请求视频文件演示(39M)

  压力测试

  在关闭日志后,使用Webbench对服务器进行压力测试,对listenfd和connfd分别采用ET和LT模式,均可实现上万的并发连接,下面列出的是两者组合后的测试结果。

  并发连接总数:10500访问服务器时间:5s所有访问均成功Proactor,LT + LT,93251 QPS

  Proactor,LT + ET,97459 QPS

  Proactor,ET + LT,80498 QPS

  Proactor,ET + ET,92167 QPS

  Reactor,LT + ET,69175 QPS

  注意: 使用本项目的webbench进行压测时,若报错显示webbench命令找不到,将可执行文件webbench删除后,重新编译即可。

  源码下载

  目前有两个版本,版本间的代码结构有较大改动,文档和代码运行方法也不一致。重构版本更简洁,原始版本(raw_version)更大保留游双代码的原汁原味,从原始版本更容易入手。

  如果遇到github代码下载失败,或访问太慢,可以从以下链接下载,与Github最新提交同步。

  github:https://github.com/qinguoyi/TinyWebServer重构版本下载地址:https://pan.baidu.com/share/init?surl=PozKji8Oop-1BYcfixZR0g提取码 : vsqq原始版本(raw_version)下载地址:https://pan.baidu.com/share/init?surl=asMNDW-zog92DZY1Oa4kaQ提取码 : 9wye快速运行

  服务器测试环境

  Ubuntu版本16.04MySQL版本5.7.29浏览器测试环境

  Windows、Linux均可ChromeFireFox其他浏览器暂无测试测试前确认已安装MySQL数据库

  // 建立yourdb库create database yourdb;// 创建user表USE yourdb;CREATE TABLE user( username char(50) NULL, passwd char(50) NULL)ENGINE=InnoDB;// 添加数据INSERT INTO user(username, passwd) VALUES('name', 'passwd');修改main.cpp中的数据库初始化信息

  //数据库登录名,密码,库名string user = "root";string passwd = "root";string databasename = "yourdb";build

  sh ./build.sh启动server

  ./server浏览器端

  ip:9006

  ——

  开源协议:Apache2.0

  开源地址:https://github.com/qinguoyi/TinyWebServer

标签: HarmonyOS