Linux下轻量级Web服务器,自学网络编程入门项目,后续会持续完善功能
- 使用线程池 + 非阻塞socket + epoll的并发模型
- 使用状态机解析HTTP请求报文,支持GET请求和POST请求
- 基于升序链表实现定时器,关闭超时的非活动连接
- 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态
- 使用cmake替换原来的makefile来构建项目。cmake代码注释可供学习使用
-
服务器测试环境
- Ubuntu 20.04
- C/C++
-
浏览器测试环境
- Windows、Linux
- Chrome、FireFox
-
修改资源路径地址 ./http/http_conn.cpp
/* 网站根目录 */ const char *doc_root = "/home/xxx/linuxWebServer/root";
-
项目根目录
make server
-
启动server
./server [ip] [port]
-
浏览器端
ip:port/[目标资源]
-
可以使用cmake构建(可选)
//根目录下执行 rm -rf build/ # 删除项目原来的build文件 cmake -B build # 生成构建目录,-B 指定生成的构建系统代码放在 build 目录 cmake --build build # 执行构建 ./server [ip] [prot] # 可执行文件默认生成目录是根目录,可在根目录下的CMakeLists中进行修改(详见注释)
├── build
│ ├── cmake构建目录
├── CGImysql
│ ├── CMakeLists.txt
│ ├── sql_connection_pool.cpp
│ └── sql_connection_pool.h
├── CMakeLists.txt
├── http
│ ├── CMakeLists.txt
│ ├── http_conn.cpp
│ └── http_conn.h
├── lib
│ ├── liblibHttp.a
│ ├── liblibLog.a
│ └── liblibSqlPool.a
├── lock
│ └── locker.h
├── log
│ ├── block_queue.h
│ ├── CMakeLists.txt
│ ├── log.cpp
│ └── log.h
├── main.cpp
├── makefile
├── README.md
├── root
│ ├── xxx资源
├── server
├── test_presure
├── threadpool
│ └── threadpool.h
└── timer
└── lst_timer.h
Linux高性能服务器编程,游双著.
TinyWebServer qinguoyi