一个基于 Go 的局域网测速工具。单文件运行,无需安装,手机扫码即可测速。
- 单文件部署 — 编译后仅一个可执行文件,无外部依赖
- 自动打开浏览器 — 启动后自动跳转测速页面
- 手机扫码测速 — 自动生成局域网 IP 二维码,手机扫码直接访问
- 完整测速流程 — 延迟 / 下载 / 上传 三阶段顺序测试,实时仪表盘动画
- 随时停止 — 测试过程中可点击按钮立即停止
- 深色/浅色主题 — 一键切换,偏好自动保存
- 本机智能识别 — 本机
127.0.0.1访问时自动隐藏测速功能,仅展示二维码供手机扫码 - 跨平台 — 支持 Windows / macOS / Linux
- 响应式 UI — 适配手机和桌面浏览器
从 Releases 页面下载对应平台的可执行文件,双击运行即可。
git clone https://github.com/sshpc/local-speed-test.git
cd local-speed-test
go build -o speedtest-go .
./speedtest-go SpeedTest Server
LAN: http://192.168.1.100:12900
Local: http://127.0.0.1:12900
浏览器自动打开 http://127.0.0.1:12900,显示系统信息和二维码。
- 在电脑上运行
speedtest-go - 用手机扫描页面上的二维码(确保手机与电脑在同一 WiFi 网络)
- 手机浏览器打开后点击 开始测速
- 等待延迟 → 下载 → 上传 三阶段测试完成
- 查看测速结果和历史记录
| 阶段 | 说明 | 并发数 | 持续时间 |
|---|---|---|---|
| 延迟 | 8 次 HTTP Ping,取最优 4 次平均值 | 1 | ~0.3s |
| 下载 | 6 路并发 fetch 流式读取随机数据 |
6 | 8s |
| 上传 | 6 路并发 fetch POST 上传 512KB 数据块 |
6 | 8s |
- 下载测试使用
ReadableStream逐块读取,实时计算速率 - 上传测试每次发送 512KB ArrayBuffer,服务端完整接收后响应
- 所有测试支持
AbortController立即中断
| 端点 | 方法 | 说明 |
|---|---|---|
/ |
GET | 测速页面(HTML) |
/api/info |
GET | 系统信息(主机名、OS、IP、CPU) |
/api/qr |
GET | QR 码 PNG 图片(?url= 参数) |
/api/ping |
GET | 延迟测量 |
/api/download |
GET | 下载数据流 |
/api/upload |
POST | 上传数据接收 |
- 后端:Go
net/http标准库,github.com/skip2/go-qrcode生成二维码 - 前端:原生 HTML/CSS/JS,无框架依赖,SVG 仪表盘动画
- 测速:
fetchAPI +ReadableStream+AbortController
local-speed-test/
├── main.go # 服务端 + 前端(HTML 内嵌)
├── go.mod # Go 模块定义
├── go.sum # 依赖校验
├── LICENSE # MIT License
└── README.md
# Windows
GOOS=windows GOARCH=amd64 go build -o speedtest-go.exe .
# macOS
GOOS=darwin GOARCH=arm64 go build -o speedtest-go-mac .
# Linux
GOOS=linux GOARCH=amd64 go build -o speedtest-go-linux .- Chrome 52+
- Firefox 65+
- Safari 10.1+
- Edge 79+