这是一个基于 C++实现的高性能 Web 服务器,采用了 Reactor 模式设计,支持 HTTP GET 和 POST 请求处理,并提供简易网盘功能。
- 使用线程池 + 非阻塞 socket + epoll实现高并发处理
- 采用正则加有限状态机解析 HTTP 请求报文
- 支持 HTTP GET 和 POST 方法
- 使用 RAII 机制管理资源
- 支持优雅关闭连接
- 使用智能指针自动管理资源
- 提供简易网盘功能,支持文件上传、下载、删除
- 支持为上传文件添加描述信息
- Linux 操作系统
- G++编译器
- 支持 C++11 标准
-
编译
g++ -o server main.cpp http_conn.cpp -pthread
-
运行
./server 10000
-
访问 同一网段下客户端可通过浏览器访问 IP:端口
- main.cpp: 主函数,处理客户端连接,创建线程池并分配任务
- http_conn.h/cpp: HTTP 连接类,处理 HTTP 请求的解析与响应
- threadpool.h: 线程池类,管理工作线程
- locker.h: 封装了互斥锁、条件变量和信号量等线程同步机制
- resources/: 存放静态资源和上传的文件
- util.h: 事件处理和文件描述符操作相关函数
- 线程池:固定数量线程,避免频繁创建销毁线程带来的系统开销
- HTTP 处理:支持 GET 和 POST 方法处理
- 事件处理:使用 epoll 实现 I/O 多路复用
- 网盘功能:支持文件上传、下载、删除和文件描述
- 解析请求行和请求头
- 识别请求的资源路径
- 返回对应的静态文件
- 完整支持 POST 请求的解析
- 支持请求体内容解析
- 可处理表单提交等操作
- 专用响应页面展示处理结果
- 支持文件上传和文件删除操作
- 显示已上传文件的列表
- 展示文件名、文件大小和文件描述
- 提供文件下载和删除功能
- 支持通过表单上传文件
- 可以为上传的文件添加描述信息
- 描述信息将在文件列表中显示
- 支持一键删除已上传的文件
- 自动清理相关的描述信息文件
服务器启动后,能够响应浏览器的请求,返回静态资源(如 HTML、图片等)。
- 访问
/查看文件列表 - 访问
/form.html可查看详情页描述 - 点击文件列表中的文件名可下载文件
- 点击删除按钮可删除文件
- 优化代码逻辑,统一 upload 和 delete 的实现规范
- 实现文件预览功能
- 支持文件分类管理
- 添加文件搜索功能
- 引入数据库存储文件元数据
- 增强安全性,添加用户认证
- 支持 HTTPS
- 完善日志记录系统