littlebot
Published on 2025-04-12 / 2 Visits
0

【源码】基于C++的轻量级Web服务器

项目简介

本项目是一个基于C++的轻量级Web服务器,具备高效的并发处理能力与丰富功能。其采用线程池、非阻塞socket、epoll(支持ET和LT模式)以及事件处理(Reactor和模拟Proactor)的并发模型,可处理高并发的HTTP请求。

项目的主要特性和功能

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

安装使用步骤

环境准备

  • 服务器测试环境:Ubuntu版本16.04,MySQL版本5.7.29。
  • 浏览器测试环境:Windows、Linux均可,Chrome、FireFox等浏览器。

数据库配置

  1. 创建数据库和用户表: sql create database yourdb; USE yourdb; CREATE TABLE user( username char(50) NULL, passwd char(50) NULL )ENGINE=InnoDB; INSERT INTO user(username, passwd) VALUES('name', 'passwd');
  2. 修改main.cpp中的数据库初始化信息: cpp string user = "root"; string passwd = "root"; string databasename = "yourdb";

编译与运行

  1. 编译项目: bash sh ./build.sh
  2. 启动服务器: bash ./server
  3. 浏览器访问: 127.0.0.1:9006

个性化配置

服务器支持通过命令行参数进行个性化配置,例如: bash ./server [-p port] [-l LOGWrite] [-m TRIGMode] [-o OPT_LINGER] [-s sql_num] [-t thread_num] [-c close_log] [-a actor_model] - -p:自定义端口号,默认9006。 - -l:选择日志写入方式,默认同步写入。 - -m:listenfd和connfd的模式组合,默认使用LT + LT。 - -o:优雅关闭连接,默认不使用。 - -s:数据库连接数量,默认为8。 - -t:线程数量,默认为8。 - -c:关闭日志,默认打开。 - -a:选择反应堆模型,默认Proactor。

示例命令: bash ./server -p 9007 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1

压力测试

使用Webbench进行压力测试,可实现上万的并发连接数据交换。测试前建议关闭日志以防止日志信息过大。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】