Files
computer-network/USAGE.md
T
2026-03-30 22:05:57 +08:00

5.7 KiB
Raw Blame History

Simple Web Server 使用指南

快速开始

1. 编译项目

go build -o webserver.exe .

2. 运行服务器

./webserver.exe

启动后你将看到以下信息:

=== Simple Web Server ===

Configuration loaded:
  HTTP Port: 9000
  Admin Port: 9001
  Root Directory: ./web

Web Server started on port 9000
Root directory: ./web
Admin console: http://localhost:9001
Admin server started on port 9001

Server is running. Press Ctrl+C to stop.

3. 访问服务

打开浏览器访问:

功能测试

自动化测试

在 Windows 上使用 test.bat 脚本进行自动化测试:

test.bat

手动测试

1. 测试正常页面(200 OK)

访问以下地址应该返回 200 状态码:

2. 测试404错误页面

访问不存在的页面应该返回 404 状态码:

浏览器应该显示友好的 404 错误页面。

3. 测试501错误

使用 POST 方法应该返回 501 状态码:

curl -X POST http://localhost:9000/test

浏览器或 curl 应该显示"方法未实现"页面。

4. 管理控制台功能

访问 http://localhost:9001/ 查看:

  • 服务器运行状态
  • 实时访问日志
  • 请求统计信息
  • 清空日志按钮

配置服务器

修改端口

编辑 config.json 文件:

{
  "port": 9000,
  "admin_port": 9001,
  "root_dir": "./web"
}
  • port: HTTP 服务器端口
  • admin_port: 管理控制台端口
  • root_dir: 静态文件根目录

修改后需要重启服务器。

添加网页文件

将 HTML、CSS、JavaScript、图片等静态文件放到 web 目录下,然后通过浏览器访问:

http://localhost:9000/your-file.html
http://localhost:9000/css/style.css

访问日志说明

服务器会在控制台输出每条请求的日志,格式如下:

[时间] 客户端IP 请求方法 请求URL HTTP版本 状态码 响应时间

示例:

[2026-03-30 11:55:22] 127.0.0.1 GET / HTTP/1.1 200 0s
[2026-03-30 11:55:23] 127.0.0.1 GET /notfound.html HTTP/1.1 404 1ms
[2026-03-30 11:55:24] 127.0.0.1 POST /test HTTP/1.1 501 2ms

管理控制台功能说明

1. 服务器状态监控

  • 显示服务器运行状态(Running/Stopped)
  • 显示当前监听端口
  • 显示总请求数量
  • 显示管理控制台端口

2. 实时日志查看

  • 自动刷新最近10条访问日志
  • 显示每条日志的详细信息:
    • 时间戳
    • 客户端IP
    • 请求方法
    • 请求URL
    • 响应状态码
    • 响应时间

3. 操作按钮

  • Refresh Status: 刷新服务器状态
  • View All Logs: 查看完整日志页面
  • Clear Logs: 清空所有访问日志
  • Refresh Logs: 手动刷新日志显示

4. 日志管理

  • 在管理控制台主页可以清空日志
  • 点击"Clear Logs"按钮清空所有访问记录
  • 清空后会自动刷新日志显示

5. 完整日志页面

访问 http://localhost:9001/logs 查看:

  • 所有历史访问日志
  • 按时间倒序排列
  • 每条日志的详细信息
  • 总请求数统计

限制与说明

仅支持 GET 方法

本服务器仅实现 HTTP GET 方法,其他方法(POST、PUT、DELETE 等)会返回 501 错误。 注意:管理控制台支持 DELETE 方法用于清空日志。

HTTP 版本

服务器支持 HTTP/1.1 协议。

并发处理

服务器使用 goroutine 处理并发请求,可以同时处理多个客户端连接。

安全注意事项

  • 本服务器是一个简单的教学用服务器,不要用于生产环境
  • 没有实现身份验证和授权机制
  • 没有防止路径遍历攻击的完整防护
  • 建议仅在受信任的网络环境中使用

常见问题

1. 端口被占用

如果看到端口被占用错误,修改 config.json 中的端口号。

2. 文件未找到

确保文件放在 web 目录下,且文件名正确。

3. 管理控制台无法访问

检查防火墙设置,确保端口 9001(或配置的管理端口)未被阻止。

4. 服务器未响应

按 Ctrl+C 停止服务器,检查是否有进程残留,然后重新启动。

5. 日志无法清空

  • 确保管理控制台已启动
  • 检查浏览器控制台是否有错误信息
  • 尝试刷新管理控制台页面

技术细节

多线程实现

服务器使用 Go 的 goroutine 和 channel 实现多线程并发:

go handleConnection(conn)  // 每个连接一个 goroutine

HTTP 解析

  • 手动解析 HTTP 请求行和头部
  • 不依赖第三方库,完全使用 Go 标准库
  • 支持 URL 参数解析

响应构造

  • 按照规范构建 HTTP/1.1 响应报文
  • 自动添加必要的头部字段
  • 根据文件扩展名设置 Content-Type

错误处理

  • 友好的错误页面设计
  • 明确的状态码返回
  • 详细的错误日志记录

日志管理

  • 内存中存储访问日志
  • 支持清空日志功能
  • REST API:DELETE /api/logs

项目依赖

  • Go 1.21 或更高版本
  • 无需第三方库,仅使用 Go 标准库

支持的文件类型

服务器支持以下文件类型并自动设置正确的 Content-Type:

扩展名 Content-Type
.html, .htm text/html
.css text/css
.js application/javascript
.json application/json
.txt text/plain
.jpg, .jpeg image/jpeg
.png image/png
.gif image/gif
.svg image/svg+xml
.ico image/x-icon
.pdf application/pdf

其他文件类型使用 application/octet-stream。

停止服务器

按 Ctrl+C 或直接关闭终端窗口即可停止服务器。