qinguoyi/TinyWebServer

🔥 Linux下C++轻量级WebServer服务器

C++CHTMLMakefileRoffcppwebserverhttp-serverwebbenchtinywebserver

Stars and forks stats for /qinguoyi/TinyWebServer

3 115 forks on 2023-07-073 117 forks on 2023-07-083 120 forks on 2023-07-093 120 forks on 2023-07-103 126 forks on 2023-07-113 127 forks on 2023-07-123 131 forks on 2023-07-133 131 forks on 2023-07-143 134 forks on 2023-07-153 136 forks on 2023-07-163 138 forks on 2023-07-173 140 forks on 2023-07-183 142 forks on 2023-07-193 145 forks on 2023-07-203 145 forks on 2023-07-213 149 forks on 2023-07-223 152 forks on 2023-07-233 154 forks on 2023-07-243 156 forks on 2023-07-253 161 forks on 2023-07-263 166 forks on 2023-07-273 168 forks on 2023-07-283 170 forks on 2023-07-293 171 forks on 2023-07-303 171 forks on 2023-07-313 175 forks on 2023-08-013 178 forks on 2023-08-023 178 forks on 2023-08-033 184 forks on 2023-08-043 187 forks on 2023-08-053 188 forks on 2023-08-063 196 forks on 2023-08-073 200 forks on 2023-08-083 201 forks on 2023-08-093 204 forks on 2023-08-103 208 forks on 2023-08-113 208 forks on 2023-08-123 208 forks on 2023-08-133 212 forks on 2023-08-143 212 forks on 2023-08-153 212 forks on 2023-08-163 214 forks on 2023-08-173 218 forks on 2023-08-183 220 forks on 2023-08-193 222 forks on 2023-08-203 223 forks on 2023-08-213 223 forks on 2023-08-223 224 forks on 2023-08-233 233 forks on 2023-08-243 237 forks on 2023-08-253 237 forks on 2023-08-263 240 forks on 2023-08-273 243 forks on 2023-08-283 246 forks on 2023-08-293 249 forks on 2023-08-303 259 forks on 2023-08-313 264 forks on 2023-09-013 266 forks on 2023-09-023 273 forks on 2023-09-033 275 forks on 2023-09-043 281 forks on 2023-09-053 287 forks on 2023-09-063 290 forks on 2023-09-073 295 forks on 2023-09-083 298 forks on 2023-09-093 298 forks on 2023-09-103 306 forks on 2023-09-113 307 forks on 2023-09-123 313 forks on 2023-09-133 316 forks on 2023-09-143 323 forks on 2023-09-153 324 forks on 2023-09-163 328 forks on 2023-09-173 330 forks on 2023-09-183 331 forks on 2023-09-193 332 forks on 2023-09-203 332 forks on 2023-09-213 333 forks on 2023-09-223 338 forks on 2023-09-233 345 forks on 2023-09-243 344 forks on 2023-09-253 348 forks on 2023-09-263 348 forks on 2023-09-273 345 forks on 2023-09-283 345 forks on 2023-09-293 345 forks on 2023-09-303 346 forks on 2023-10-013 346 forks on 2023-10-023 349 forks on 2023-10-033 349 forks on 2023-10-04

3.3kforks in total +270last 90 days

11 698 stars on 2023-07-0711 711 stars on 2023-07-0811 725 stars on 2023-07-0911 725 stars on 2023-07-1011 743 stars on 2023-07-1111 764 stars on 2023-07-1211 786 stars on 2023-07-1311 803 stars on 2023-07-1411 813 stars on 2023-07-1511 827 stars on 2023-07-1611 833 stars on 2023-07-1711 850 stars on 2023-07-1811 872 stars on 2023-07-1911 889 stars on 2023-07-2011 889 stars on 2023-07-2111 903 stars on 2023-07-2211 914 stars on 2023-07-2311 924 stars on 2023-07-2411 945 stars on 2023-07-2511 959 stars on 2023-07-2611 977 stars on 2023-07-2711 987 stars on 2023-07-2811 997 stars on 2023-07-2912 004 stars on 2023-07-3012 015 stars on 2023-07-3112 028 stars on 2023-08-0112 039 stars on 2023-08-0212 039 stars on 2023-08-0312 077 stars on 2023-08-0412 086 stars on 2023-08-0512 093 stars on 2023-08-0612 109 stars on 2023-08-0712 111 stars on 2023-08-0812 120 stars on 2023-08-0912 132 stars on 2023-08-1012 145 stars on 2023-08-1112 154 stars on 2023-08-1212 162 stars on 2023-08-1312 173 stars on 2023-08-1412 182 stars on 2023-08-1512 182 stars on 2023-08-1612 195 stars on 2023-08-1712 214 stars on 2023-08-1812 225 stars on 2023-08-1912 244 stars on 2023-08-2012 254 stars on 2023-08-2112 271 stars on 2023-08-2212 282 stars on 2023-08-2312 301 stars on 2023-08-2412 316 stars on 2023-08-2512 318 stars on 2023-08-2612 339 stars on 2023-08-2712 364 stars on 2023-08-2812 382 stars on 2023-08-2912 401 stars on 2023-08-3012 458 stars on 2023-08-3112 484 stars on 2023-09-0112 495 stars on 2023-09-0212 530 stars on 2023-09-0312 546 stars on 2023-09-0412 578 stars on 2023-09-0512 598 stars on 2023-09-0612 622 stars on 2023-09-0712 640 stars on 2023-09-0812 651 stars on 2023-09-0912 651 stars on 2023-09-1012 668 stars on 2023-09-1112 683 stars on 2023-09-1212 696 stars on 2023-09-1312 721 stars on 2023-09-1412 758 stars on 2023-09-1512 764 stars on 2023-09-1612 770 stars on 2023-09-1712 787 stars on 2023-09-1812 803 stars on 2023-09-1912 807 stars on 2023-09-2012 807 stars on 2023-09-2112 824 stars on 2023-09-2212 836 stars on 2023-09-2312 862 stars on 2023-09-2412 875 stars on 2023-09-2512 884 stars on 2023-09-2612 893 stars on 2023-09-2712 902 stars on 2023-09-2812 905 stars on 2023-09-2912 905 stars on 2023-09-3012 912 stars on 2023-10-0112 918 stars on 2023-10-0212 927 stars on 2023-10-0312 927 stars on 2023-10-04

12.9kstars in total +1.3klast 90 days

This is stars and forks stats for /qinguoyi/TinyWebServer repository. As of 04 Oct, 2023 this repository has 12927 stars and 3349 forks.

TinyWebServer Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器. 使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现) 的并发模型 使用状态机解析HTTP请求报文,支持解析GET和POST请求 访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件 实现同步/异步日志系统,记录服务器运行状态 经Webbench压力测试可以实现上万的并发连接数据交换 写在前面 本项目开发维护过程中,很多童鞋曾发红包支持,我都一一谢绝。我现在不会,将来也不会将本项目包装成任何课程售卖,更不会开通任何支持通道。 目前网络上有人或对本项目,或对游双大佬的项目包装成课程售卖。请各位童鞋擦亮眼,辨识各大学习/求职网站的C++服务器项目,不要盲目付费。 有面试官大佬通过项目信息在公司内找到我,发现很多童鞋简历上都用了这个项目。但,在面试过程中发现很多童鞋通过本项目入门了,但是对于一些东西还是属于知其然不知其所以然的状态,需要加强下基础知识的学习,推荐认真阅读下 《unix环境高级编程》 《unix网络编程》 感谢各位大佬,各位朋友,各位童鞋的认可和支持。如果本项目能带你入门,将是我莫大的荣幸。 目录 概述 框架 Demo演示 压力测试 更新日志 源码下载 快速运行 个性化运行 庖丁解牛 CPP11实现 致谢 概述 C/C++ B/S模型 线程同步机制包装类 http连接请求处理类 半同步/半反应堆线程池 定时器处理非活动连接 同步/异步日志系统 数据库连接池 同步线程注册和登录校验 简易服务器压力测试 框架 Demo演示 注册演示 登录演示 请求图片文件演示(6M) 请求视频文件演示(39M) 压力测试 在关闭日志后,使用Webbench对服务器进行压力测试,对listenfd和connfd分别采用ET和LT模式,均可实现上万的并发连接,下面列出的是两者组合后的测试结果. 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 并发连接总数:10500 访问服务器时间:5s 所有访问均成功 注意: 使用本项目的webbench进行压测时,若报错显示webbench命令找不到,将可执行文件webbench删除后,重新编译即可。 更新日志 解决请求服务器上大文件的Bug 增加请求视频文件的页面 解决数据库同步校验内存泄漏 实现非阻塞模式下的ET和LT触发,并完成压力测试 完善lock.h中的封装类,统一使用该同步机制 改进代码结构,更新局部变量懒汉单例模式 优化数据库连接池信号量与代码结构 使用RAII机制优化数据库连接的获取与释放 优化代码结构,封装工具类以减少全局变量 编译一次即可,命令行进行个性化测试更加友好 main函数封装重构 新增命令行日志开关,关闭日志后更新压力测试结果 改进编译方式,只配置一次SQL信息即可 新增Reactor模式,并完成压力测试 源码下载 目前有两个版本,版本间的代码结构有较大改动,文档和代码运行方法也不一致。重构版本更简洁,原始版本(raw_version)更大保留游双代码的原汁原味,从原始版本更容易入手. 如果遇到github代码下载失败,或访问太慢,可以从以下链接下载,与Github最新提交同步. 重构版本下载地址 : BaiduYun 提取码 : vsqq 原始版本(raw_version)下载地址 : BaiduYun 提取码 : 9wye 原始版本运行请参考原始文档 快速运行 服务器测试环境 Ubuntu版本16.04 MySQL版本5.7.29 浏览器测试环境 Windows、Linux均可 Chrome FireFox 其他浏览器暂无测试 测试前确认已安装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 个性化运行 ./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模型 测试示例命令与含义 ./server -p 9007 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1 端口9007 异步写入日志 使用LT + LT组合 使用优雅关闭连接 数据库连接池内有10条连接 线程池内有10条线程 关闭日志 Reactor反应堆模型 庖丁解牛 近期版本迭代较快,以下内容多以旧版本(raw_version)代码为蓝本进行详解. 小白视角:一文读懂社长的TinyWebServer 最新版Web服务器项目详解 - 01 线程同步机制封装类 最新版Web服务器项目详解 - 02 半同步半反应堆线程池(上) 最新版Web服务器项目详解 - 03 半同步半反应堆线程池(下) 最新版Web服务器项目详解 - 04 http连接处理(上) 最新版Web服务器项目详解 - 05 http连接处理(中) 最新版Web服务器项目详解 - 06 http连接处理(下) 最新版Web服务器项目详解 - 07 定时器处理非活动连接(上) 最新版Web服务器项目详解 - 08 定时器处理非活动连接(下) 最新版Web服务器项目详解 - 09 日志系统(上) 最新版Web服务器项目详解 - 10 日志系统(下) 最新版Web服务器项目详解 - 11 数据库连接池 最新版Web服务器项目详解 - 12 注册登录 最新版Web服务器项目详解 - 13 踩坑与面试题 已更新完毕 Star History CPP11实现 更简洁,更优雅的CPP11实现:Webserver 致谢 Linux高性能服务器编程,游双著. 感谢以下朋友的PR和帮助: @RownH,@mapleFU,@ZWiley,@zjuHong,@mamil,@byfate,@MaJun827,@BBLiu-coder,@smoky96,@yfBong,@liuwuyao,@Huixxi,@markparticle,@blogg9ggg.
Read on GithubGithub Stats Page
repotechsstarsweeklyforksweekly
envoyproxy/envoyC++StarlarkJava22.8k04.5k0
Tencent/rapidjsonC++CCMake13.4k+93.5k+4
wang-xinyu/tensorrtxC++PythonCuda6k01.6k0
Tencent/MMKVC++JavaObjective-C++16.2k01.8k0
versatica/mediasoupC++RustTypeScript5.5k+51k+1
tesseract-ocr/tesseractC++CJava53.7k+1028.8k+13
grpc/grpcC++PythonC39.1k+3310.5k+14
fengdu78/Coursera-ML-AndrewNg-NotesHTMLJupyter Notebook28.8k010.3k0
ZLMediaKit/ZLMediaKitC++JavaScriptCMake10.7k02.8k0
pytorch/pytorchPythonC++Cuda71.3k+17819.6k+47