5a0c9b06ee42d8bfec0bb38966c4cabe7b990ae2
云算力平台客户端 - Windows / Linux 桌面应用
基于 Flutter 开发的 Windows 桌面客户端应用,实现与云算力平台的通信、挖矿管理等功能。
功能特性
1. 主界面信息显示
主界面实时显示以下信息:
- 版本号:从
bin/version文件读取 - 身份信息:从
bin/auth文件读取 - GPU 信息:通过
nvidia-smi命令自动检测(启动时获取一次)- 显示 GPU索引、品牌、型号、显存大小
- 硬盘身份码:通过
wmic diskdrive get serialnumber命令获取 - 当前状态:实时显示客户端连接状态:
- 🔴 离线:未连接服务器,红色指示
- 🟢 在线:已连接服务器,绿色指示
- 🟡 挖矿中:租约挖矿进行中,黄色指示
- 🔵 持续挖矿中:持续挖矿任务进行中,蓝色指示
2. 版本更新功能
- 自动检查远程版本(从配置的
update_url获取) - 发现新版本时显示更新提示卡片
- 支持一键下载并更新客户端
- 更新完成后在下次启动时自动应用
3. 主要功能按钮
3.1 查看日志
- 实时动态显示客户端日志
- 支持自动滚动和手动滚动
- 可刷新和清空日志
- 日志文件位置:
bin/logs/client.log
3.2 查看/修改配置
- 表单式配置编辑:采用输入框形式,而非直接文本编辑
- 每个配置项都有复选框,勾选后才能编辑
- 按配置节分组显示:
- 客户端配置(server_url, update_url)
- LolMiner 配置
- Rigel 配置
- BzMiner 配置
- 代理配置
- 持续挖矿配置
- 配置文件位置:
bin/mining.windows.conf - 修改后需点击保存按钮保存更改
3.3 挖矿信息
- 按钮状态:一直显示,但只有在挖矿中状态时才能点击
- 显示当前挖矿任务的详细信息:
- 币种、算法、矿池、矿池地址
- 钱包地址、矿工号
- 挖矿软件、进程ID
- 任务结束时间、剩余时间
- 实时日志显示:
- 显示挖矿软件的标准输出和错误输出
- 支持自动滚动和手动滚动
- 可清空日志
- 日志格式与外部查看日志布局相似
3.4 重启
- 点击后显示确认对话框
- 重启过程中显示加载动画,禁用所有操作
- 重启完成后显示成功/失败结果提示
- 自动重新初始化所有服务
3.5 退出程序
- 点击后显示确认对话框
- 确认后安全退出应用程序
技术架构
核心模块
- ClientCore:TCP 通信核心,处理与服务器的连接、心跳、消息收发
- MiningManager:挖矿软件管理,支持 lolminer、rigel、bzminer
- SustainMiner:持续挖矿管理,在无租约期间自动挖矿
- SystemInfoService:系统信息获取(GPU、硬盘序列号等)
- ConfigService:配置文件管理(INI 格式)
- UpdateService:版本检查和更新管理
- DatabaseService:挖矿任务日志管理(基于
bin/mining_tasks.log的 JSON 行记录,用于保存 / 恢复当前或最近一次挖矿任务) - LogService:客户端日志文件管理
数据存储
- 配置文件:
bin/mining.windows.conf(INI 格式) - 身份文件:
bin/auth - 版本文件:
bin/version - 挖矿任务日志:
bin/mining_tasks.log(JSON 行格式,仅记录当前 / 最近任务,用于断线恢复) - 日志文件:
bin/logs/client.log
通信协议
- 协议:TCP Socket
- 消息格式:JSON,每行一条消息
- 心跳机制:服务器发送 ping,客户端回复 pong
- 身份认证:格式为
身份信息::硬盘身份码
配置文件说明
配置文件 bin/mining.windows.conf 采用 INI 格式,包含以下配置节:
[client]
server_url:服务器地址(RabbitMQ 通信目标)update_url:更新服务器地址(用于版本检查和更新)
[lolminer] / [rigel] / [bzminer]
path:挖矿软件路径(使用双反斜杠\\)
[proxy]
proxy:是否启用代理(true/false)
[sustain]
enabled:是否启用持续挖矿algo:算法coin:币种miner:挖矿软件名pool_url:矿池地址wallet:钱包地址worker_id:矿工号pool_user:矿池用户名(可选)wallet_mining:是否使用钱包挖矿
部署说明
开发环境
- 确保已安装 Flutter SDK 并启用 Windows 桌面支持
- 在
windows目录下运行:flutter pub get flutter run -d windows
发布版本
-
构建发布版本:
flutter build windows --release -
部署文件结构:
cloud_client_gui.exe bin/ ├── version # 版本文件(必需) ├── auth # 身份信息文件(必需) ├── mining.windows.conf # 配置文件(必需) ├── logs/ │ └── client.log # 日志文件(自动创建) └── mining_task.db # 数据库文件(自动创建) -
重要:
bin文件夹必须与.exe文件在同一目录下
路径说明
- 开发模式:程序会自动检测并定位到
windows/bin目录 - 发布模式:
bin文件夹应与可执行文件在同一目录 - 所有文件路径都基于可执行文件所在目录自动计算
依赖项
主要依赖包:
provider:状态管理sqflite_common_ffi:SQLite 数据库(Windows 桌面)ini:INI 文件解析http:HTTP 请求(版本更新)logging:日志系统path:路径处理
注意事项
- 首次运行需要确保
bin目录下存在version和auth文件 - GPU 信息只在程序启动时获取一次,避免频繁调用系统命令
- 配置文件修改后需要保存才能生效
- 重启功能会重新初始化所有服务,可能需要几秒钟时间
- 挖矿信息按钮在非挖矿状态下会显示为灰色且不可点击
开发说明
本项目是基于 Go 客户端功能完全重新实现的 Flutter Windows 桌面应用,实现了与 Go 版本相同的所有核心功能,包括:
- TCP 通信和心跳机制
- 挖矿软件管理
- 持续挖矿支持
- 系统信息获取
- 配置管理
- 版本更新
Description
Languages
Dart
75.6%
C++
12.8%
CMake
7%
Shell
4.1%
C
0.5%