标准C语言实现简单Web服务器

标准C语言实现简单Web服务器
Crosery标准C语言实现简单Web服务器
本课设任务来自长江大学计算机网络课设任务四!
环境需要:Visual Studio 2022 + CMake + 命令行编译
一、项目介绍
📋 任务要求
设计目标:
完成基础的tcp连接,支持基础的client与其连接,简单的http访问,支持静态页面访问,需要一定的报错机制,如404页面的建立。
- socket实现简单Http服务器,完成html的解析;
- 运行该服务器可以通过浏览器访问服务器目录下的 Html文件、jpg图片、css文件的载入。 完成初步的Http服务器功能。
相关技术:
Server端:
- 完成socket(),bind(),listen()这些初始化工作后,调用accept()方法阻塞等待,等待Client的connect()方法连接
- 处理HTTP请求,解析请求行、请求头,返回相应的静态文件或错误页面

二、运行截图
代码实现效果:


三、开发环境安装
3.1 Visual Studio 2022 安装(推荐)
下载地址:Visual Studio 2022 Community
3.2 CMake 安装
下载地址:CMake官网
安装步骤:
- 下载CMake最新版本的Windows x64 Installer
- 运行安装程序
- 重要:安装时勾选"Add CMake to the system PATH for all users"
- 完成安装后,打开命令行验证: cmake --version 
3.3 Git 安装(可选)
用于克隆项目代码:
下载地址:Git for Windows
四、项目结构
| C_web/ | 
五、编译与运行
5.1 CMake + 命令行
步骤:
- 打开命令行: - 按 Win + R,输入cmd,回车
- 或在项目文件夹按住 Shift右键,选择"在此处打开PowerShell窗口"
 
- 按 
- 进入项目目录: - cd 项目工作目录 
- 配置项目(首次运行): - cmake -B build -S . 
- 编译项目: - # Debug版本(默认) 
 cmake --build build
 # Release版本(性能更好)
 cmake --build build --config Release
- 运行程序: - # Debug版本 
 bin\Debug\main.exe
 # Release版本
 bin\Release\main.exe
 # 指定端口运行
 bin\Debug\main.exe 9000
5.2 方式二:GCC命令行编译
前提:需要安装MinGW-w64或使用WSL
教程:环境搭建 | Windows中MinGW-w64及GCC的下载、安装与配置 - 字节幺零二四 - 博客园
编译命令:
| # 基础编译 | 
六、快速开始
6.1 第一次运行
- 下载/克隆项目: - git clone https://gitee.com/Crosery/C_web.git 
 cd C_web
- 选择编译方式(推荐CMake): - cmake -B build -S . 
 cmake --build build
- 将resources文件放进与main.exe的同级目录:  
- 运行服务器: - bin\Debug\main.exe 
- 访问网站: - 打开浏览器
- 访问:http://localhost:8007
 
七、配置文件
7.1 环境配置文件(.env)
在项目根目录创建 .env 文件:
| # 服务器配置 | 
7.2 CMakeLists.txt 说明
项目已包含完整的CMake配置:
| # CMake最小版本要求 | 
八、自定义配置教程
8.1 修改端口配置
方法一:环境配置文件(推荐)
| SERVER_PORT=9999 # 修改为你的端口 | 
方法二:命令行参数
| bin\Debug\main.exe 9999 | 
方法三:修改源码
| // src/main.c 中修改 | 
8.2 修改个人信息
修改服务器作者信息:
编辑 src/main.c,找到 display_server_logo()
函数:
| printf(" Created by 你的姓名\n\n"); | 
修改网页个人信息:
编辑 index.html,找到个人信息部分:
| <div class="content"> | 
九、常见问题解决
9.1 编译问题
问题1:cmake不是内部或外部命令
解决方案:
- 重新安装CMake,确保勾选"Add to PATH"
- 重启命令行或重启电脑
- 手动添加CMake到环境变量PATH
问题2:找不到编译器
解决方案:
- 确保安装了Visual Studio 2022的C++工具
- 在开发者命令提示符中运行CMake:
- 开始菜单搜索"Developer Command Prompt for VS 2022"
 
问题3:链接错误 ws2_32.lib
解决方案:
| // 确保代码中包含 | 
9.2 运行问题
问题1:端口被占用
解决方案:
| # 查看端口占用 | 
问题2:防火墙拦截
解决方案:
- Windows Defender → 允许应用通过防火墙
- 添加main.exe到允许列表
十、日志系统说明
10.1 日志级别和颜色
| 级别 | 颜色 | 用途 | 示例 | 
|---|---|---|---|
| LOG_INFO | 🔵 蓝色 | 一般信息 | 服务器启动 | 
| LOG_SUCCESS | 🟢 绿色 | 成功操作 | 文件发送成功 | 
| LOG_WARNING | 🟡 黄色 | 警告信息 | 配置文件未找到 | 
| LOG_ERROR | 🔴 红色 | 错误信息 | 文件不存在 | 
| LOG_DETAIL | 🔷 青色 | 详细信息 | 请求详情 | 
| LOG_CONFIG | 🟣 紫色 | 配置信息 | 端口配置 | 
10.2 日志示例输出
| ████████████████████████████████████████████████████████ | 
十一、支持的文件类型
服务器支持以下文件类型的自动MIME类型识别:
| 文件类型 | 扩展名 | MIME类型 | 
|---|---|---|
| 网页文件 | .html | text/html | 
| 样式文件 | .css | text/css | 
| 脚本文件 | .js | application/javascript | 
| 图片文件 | .jpg/.jpeg | image/jpeg | 
| 图片文件 | .png | image/png | 
| 图片文件 | .gif | image/gif | 
| 文本文件 | .txt | text/plain | 
| XML文件 | .xml | text/xml | 
| JSON文件 | .json | application/json | 
| 音频文件 | .mp3 | audio/mpeg | 
 评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果







