核心功能
静态文件服务
提供高效的静态文件服务功能,支持HTML、CSS、JavaScript、图片等各种静态资源的快速访问。自动处理MIME类型,确保浏览器正确解析各类文件。
支持大文件传输,优化的文件读取机制,提供稳定可靠的文件服务能力。
目录浏览
自动生成美观的目录索引页面,方便浏览服务器上的文件结构:
- ✅ 基本的HTTP服务器功能,静态页面服务
- ✅ 提供未定义类型文件的自动下载
- ✅ 目录安全
可配置的服务器参数
灵活的配置选项,满足不同的使用需求:
- 🔧 自定义端口号设置
- 📂 可选择的根目录路径
- 📝 详细的访问日志记录
- 🔄 实时状态监控和连接显示
轻量级设计
极简设计理念,专注于核心功能:
- 占用资源少,启动快速
- 无需安装,绿色便携
- 界面简洁直观,易于操作
- 支持Windows各版本系统
系统要求与安装
最低系统要求
- 💻 操作系统:Windows 7 及以上(32位/64位)
- 🔧 .NET Framework 4.0 或更高版本
- 💾 硬盘空间:5MB(工具本身)+ 网站文件存储所需空间
- ⏱️ 无需特殊硬件要求
使用说明
本工具为绿色软件,无需安装,直接运行:
- 下载并解压到任意目录(如 D:\Tools\BasicHttpServer)
- 双击运行
BasicHttpServer.exe - 程序运行时, 会检查其运行目录下是否存在一个foldername.txt,该文件用于指定服务器所使用的文件夹名称,不存在时会自动创建,并指定文件夹为files并创建
- 在界面中设置端口号,点击「Start」即可开始提供HTTP服务
注意:确保端口不被其他应用占用,且有足够的文件系统访问权限。
常见问题
常见问题(FAQ)
Q1:如何更改服务器端口?
A1:在应用程序界面中,直接修改端口号输入框的值,然后重新启动服务即可。
Q2:如何访问服务器上的文件?
A2:启动服务后,在浏览器中输入 http://localhost:端口号 即可访问根目录,或直接输入具体文件路径。
Q3:为什么访问文件夹时需要输入完整路径?
A3:本工具支持无论URL是否以/结尾,都会检查请求路径是否为文件夹,并自动查找index.html文件。
Q4:如何联系技术支持?
A4:若遇到问题或有功能建议,请发送邮件至 IAmSystem32@outlook.com,注明「BasicHttpServer+问题描述+系统版本」,我们会在3个工作日内回复。
完整技术文档
开发人员文档 - BasicHttpServer 技术实现解析
1. 服务器架构与核心组件
BasicHttpServer 是一个基于 .NET HttpListener 构建的轻量级 HTTP 服务器,采用事件驱动架构设计,以下是其核心架构组成:
- 事件循环模型:使用 BeginGetContext/EndGetContext 异步模式处理连接请求,实现非阻塞 I/O 操作
- 请求处理线程池:每个客户端请求由独立线程处理,避免请求间相互阻塞,提高并发能力
- 模块化设计:功能按职责划分为不同模块,便于维护和扩展
- 资源管理系统:完善的资源创建、使用和释放机制,确保不发生资源泄漏
2. HTTP 协议实现细节
服务器实现了完整的 HTTP/1.1 协议子集,支持以下特性:
- 请求解析:支持解析 HTTP 方法、URL、请求头和查询参数
- Range 请求支持:实现 RFC 7233 规范,支持断点续传和多线程下载
- 缓存控制>:通过 Cache-Control 头实现客户端缓存控制,减少重复请求
- 内容协商:根据 Accept 头和文件类型返回适当的 Content-Type 响应头
- 错误状态处理:实现标准 HTTP 错误状态码和自定义错误页面(404、500、503、405)
3. API 端点与功能说明
服务器提供以下主要 API 端点和功能:
3.1 文件服务 API
- 静态文件获取:`GET /{path}/{filename}` - 返回指定路径下的文件内容,自动设置正确的 MIME 类型
- 目录浏览:`GET /{directory}/` - 当目录存在 index.html 时返回,否则返回 404 错误页面
- 图标请求:`GET /favicon.ico` - 自动响应浏览器图标请求,支持多位置图标查找
3.2 系统控制 API
- 隐藏窗口:`GET /cmd?command=hide` - 隐藏服务器主窗口
- 显示窗口:`GET /cmd?command=show` - 显示服务器主窗口
- 退出程序:`GET /cmd?command=exit` - 安全关闭服务器并退出程序
- 清理日志:`GET /cmd?command=clearlog` - 清空日志内容
- 切换日志锁定:`GET /cmd?command=togglelocklog` - 切换日志锁定状态,控制是否继续写入日志
3.3 临时数据存储 API
- 存储临时文本:`POST /tempstring?key={key}` - 存储临时文本内容到指定键名
- 获取临时文本:`GET /tempstring?key={key}` - 获取之前存储的临时文本内容
4. 核心类与方法详解
4.1 Form1 类(主窗体与控制中心)
- Server_Start():初始化并启动 HTTP 服务器,配置监听端口和基本设置
- Server_Stop():安全停止 HTTP 服务器,释放所有资源和连接
- ProcessClientRequest():处理客户端请求的主入口,根据请求路径路由到不同处理逻辑
- HandleFileRequest():处理文件请求,包括路径解析、文件读取和响应生成
- ProcessRangeRequestAsync():异步处理 Range 请求,实现断点续传功能
4.2 辅助类与工具函数
- Log 类:实现日志记录功能,支持实时控制台输出和文件持久化存储,使用 RTF 格式增强可读性
- Write():写入普通日志信息
- WriteError():写入错误日志,使用红色显示
- WriteRequest():写入请求日志,使用蓝色显示
- UrlHelper 模块:提供 URL 解析和参数提取功能
- GetUrlParameters():从 URL 提取查询参数
- GetUrlPart():提取 URL 中的特定部分
- UrlParameters 类:参数管理类,提供参数的添加、获取和检查功能
- Add():添加键值对参数
- Get():获取指定键的参数值
- Contains():检查是否包含指定键
- HttpAssistant 模块:HTTP 相关辅助功能
- GetMimeType():根据文件扩展名获取 MIME 类型
- SendHttpResponse():统一的 HTTP 响应发送方法
- FindByteSequence():在字节数组中查找特定序列
5. 配置选项与环境变量
- 端口配置:默认端口 721,可通过界面自定义或通过 foldername.txt 配置
- 服务文件夹设置:默认为当前目录下的 "files" 文件夹,可通过 foldername.txt 自定义
- 图标路径配置:支持多位置图标查找,包括当前目录、服务目录和默认内置图标
6. 错误处理与调试机制
服务器实现了全面的错误处理和调试功能:
- 异常捕获机制:所有关键操作均包含 try-catch-finally 块,确保异常不会导致服务器崩溃
- 详细日志记录:错误发生时记录完整异常信息,包括堆栈跟踪,便于问题诊断
- 用户友好错误页面:为常见错误提供清晰的错误页面和状态码,帮助客户端理解问题
- 资源安全释放:使用 using 语句和 finally 块确保所有文件和网络资源正确释放
7. 安全考虑与最佳实践
- 路径遍历防护:通过路径规范化和验证防止目录遍历攻击,确保只能访问服务目录内的文件
- 请求验证:对 URL 参数和请求数据进行严格验证,防止注入攻击
- 资源限制:实现请求处理超时和资源限制,防止恶意请求消耗过多系统资源
- 最佳实践建议:建议在生产环境中部署时配合防火墙使用,限制访问来源,并定期检查日志
8. 扩展开发指南
要扩展服务器功能,开发者可以:
- 在 ProcessClientRequest 方法中添加新的路由处理逻辑
- 扩展 HttpAssistant 模块以支持更多 MIME 类型
- 修改 InlinePages 模块自定义错误页面内容
- 为 Log 类添加更多日志级别和功能
9. 技术规格与依赖项
- 开发语言:Visual Basic .NET
- 运行环境:.NET Framework
- 核心依赖:System.Net.HttpListener, System.IO, System.Text
- 网络协议支持:HTTP/1.1
- 默认端口:14919
开发人员按钮...
GUI右上角区域有一个显示为"B"的按钮
按下会自动开放当前选定端口的防火墙,并自动启动服务器
不推荐在生产环境使用
版权与许可
© 2025 I Am System32. 保留所有权利。
本软件为个人非商业用途免费软件,您可自由下载、使用,但不得用于商业盈利、复制分发或反向工程。
使用本软件即表示您接受 《最终用户许可协议(EULA)》 中的所有条款。