- 使用 线程池 + 非阻塞socket + epoll(LT实现) + 事件处理(Proactor模式)并发模型
- 使用状态机解析HTTP请求报文,支持解析GET和POST请求
- 访问服务器数据库实现web端用户请求页面,可以请求服务器图片或其他数据信息
- 经Webbench压力测试可以实现上万的并发连接数据交换
gif演示效果如下:
-
服务器测试环境
CentOS Linux release 8.5.2111
Ubuntu 20.04.3 LTS
-
浏览器测试环境
Linux、windows环境均可
Chrome、Firefox 访问效果符合预期。
其他环境与浏览器暂未测试
-
编译
g++ *.cpp -o webserver -pthread
-
运行
运行需要指定端口号,如果没有指定端口号,在运行时会给出运行提示,关于端口,如果使用云服务器,需要开放指定端口访问和开启系统防火墙指定端口
下面演示的是 指定 9999端口
./webserver 9999
-
访问
浏览器端打开 ip+port+页面
ip:port/index.html