Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shidazhuang/myTinyWebServer
https://github.com/shidazhuang/myTinyWebServer
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/shidazhuang/myTinyWebServer
- Owner: shidazhuang
- License: apache-2.0
- Created: 2022-06-05T09:18:08.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-06-05T09:21:00.000Z (over 2 years ago)
- Last Synced: 2024-08-03T11:08:42.013Z (4 months ago)
- Language: C++
- Size: 18.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-learning-projects - myTinyWebServer
README
TinyWebServer
===============
Linux下基于C++的轻量级Web服务器注释、修改版本.
原项目来自:https://github.com/qinguoyi/TinyWebServer**有什么特点?**
* 使用 **线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现)** 的并发模型
* 使用**状态机**解析HTTP请求报文,支持解析**GET和POST**请求
* 访问服务器数据库实现web端用户**注册、登录**功能,可以请求播放服务器**图片和视频文件**
* 实现**同步/异步日志系统**,记录服务器运行状态
* 经Webbench压力测试可以实现**上万的并发连接**数据交换
-----
快速运行
------------
* 服务器测试环境
* Ubuntu版本16.04
* MySQL版本5.7.29
* 浏览器测试环境
* Windows、Linux均可
* Chrome
* FireFox
* 其他浏览器暂无测试* 测试前确认已安装MySQL数据库
```C++
// 建立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中的数据库初始化信息
```C++
//数据库登录名,密码,库名
string user = "root";
string passwd = "root";
string databasename = "yourdb";
```* build 编译项目
```C++
sh ./build.sh
```* 启动server服务器项目
```C++
./server
```* 浏览器端 打开指定网页
```C++
127.0.0.1:9006
```个性化运行
------```C++
./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,选择日志写入方式,默认同步写入
* 0,同步写入
* 1,异步写入
* -m,listenfd和connfd的模式组合,默认使用LT + LT
* 0,表示使用LT + LT
* 1,表示使用LT + ET
* 2,表示使用ET + LT
* 3,表示使用ET + ET
* -o,优雅关闭连接,默认不使用
* 0,不使用
* 1,使用
* -s,数据库连接数量
* 默认为8
* -t,线程数量
* 默认为8
* -c,关闭日志,默认打开
* 0,打开日志
* 1,关闭日志
* -a,选择反应堆模型,默认Proactor
* 0,Proactor模型
* 1,Reactor模型测试示例命令与含义
```C++
./server -p 9007 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1
```- [x] 端口9007
- [x] 异步写入日志
- [x] 使用LT + LT组合
- [x] 使用优雅关闭连接
- [x] 数据库连接池内有10条连接
- [x] 线程池内有10条线程
- [x] 关闭日志
- [x] Reactor反应堆模型致谢
------------
Linux高性能服务器编程,游双著.
源码来自:https://github.com/qinguoyi/TinyWebServer