# HTTP服务器 **Repository Path**: sand128/http-server ## Basic Information - **Project Name**: HTTP服务器 - **Description**: 通过守护进程在后台运行 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-17 - **Last Updated**: 2025-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HTTP服务器项目说明 ## 项目概述 这是一个基于C语言实现的高性能HTTP服务器,采用线程池技术处理并发连接,使用epoll实现高效的I/O多路复用。服务器支持HTTP/1.1协议,能够处理静态文件请求,并具备完善的错误处理和日志功能。 ## 项目结构 ``` text HTTP-Server/ ├── src/ │ ├── main.c # 主程序入口,服务器初始化与事件循环 │ ├── threadpool.c # 线程池实现 │ ├── threadpool.h # 线程池头文件 │ ├── run.c # HTTP请求处理逻辑 │ ├── run.h # HTTP相关定义 │ └── setting.h # 全局配置和宏定义 └── README.md # 项目说明文档 ``` ## 功能特性 ### 核心功能 1. 支持HTTP/1.1协议 2. 处理GET方法请求 3. 静态文件服务 4. MIME类型自动识别 5. Keep-Alive持久连接 ## 高级特性 1. 线程池管理并发连接 2. epoll高效事件处理 3. 守护进程模式 4. 请求日志记录 5. 安全路径检查 ## 详细技术实现 1. 线程池架构 - 预创建线程:启动时创建固定数量工作线程 - 任务队列:采用生产者-消费者模式 - 线程同步:使用互斥锁(pthread_mutex_t)和条件变量(pthread_cond_t) - 退出:支持安全关闭所有线程 2. 网络处理 - 端口复用:设置SO_REUSEADDR和SO_REUSEPORT选项 - epoll事件循环:高效处理数千并发连接 - 非阻塞I/O:边缘触发(ET)模式 - sendfile零拷贝:高效传输文件内容 3. HTTP协议实现 - 请求解析:完整解析请求行和头部 - URL解码:处理%编码和+空格转换 - 连接管理:支持Keep-Alive - 状态码响应:实现200、403、404、500等状态 ## 编译安装 - 依赖项 - GCC编译器 - Linux系统(需要epoll支持) - pthread线程库 ## 性能优化 ### 线程池调优: - 根据CPU核心数设置线程数量 - 监控任务队列长度调整队列大小 ## 安全注意事项 ### 路径安全: - 检查路径中的../等遍历序列 ### 资源限制: - 设置文件描述符上限 - 限制单个连接资源使用