# netty-demo **Repository Path**: hslei/netty-demo ## Basic Information - **Project Name**: netty-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-12 - **Last Updated**: 2026-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 终端 UDP 上报与指令下发系统 终端设备通过 UDP 向"上位机"秒级上报运行状态,上位机下发配置指令(ACK + 重传保证可靠)。 ## 模块 | 模块 | 说明 | 技术栈 | |---|---|---| | `protocol-common` | UDP 通信协议编解码库(server/simulator 共用) | Java 21,零依赖 | | `server` | 上位机后端:UDP 接入、设备/状态/指令、WebSocket、REST | Spring Boot 3.3 + Netty + MyBatis-Plus + MySQL 8 | | `simulator` | 终端模拟器:模拟 N 台设备上报/应答(联调用) | Java 21 + java.net | | `web` | 管理端:设备列表、实时状态、指令下发 | Vue 3 + Vite + Element Plus + ECharts | ## 快速开始 ```bash # 0. 建库建表(一次性):执行 docs/design/schema.sql # 1. 后端(UDP 9090 / HTTP 8080) mvn -pl server spring-boot:run # 2. 模拟 10 台终端(1s 上报) mvn -pl simulator exec:java -Dexec.mainClass=com.hsl.netty.simulator.SimulatorMain -Dexec.args="--count 10" # 3. 管理端 http://localhost:5173 cd web && npm install && npm run dev ``` ## 核心特性 - **自定义协议**:二进制帧头(魔数/设备ID/seq/时间戳/CRC32)+ JSON payload,字段自由扩展 - **可靠指令下发**:ACK 确认 + 1s/2s/4s 退避重传 + seq 去重;重传状态落库,服务重启可恢复 - **设备管理**:自动注册建档、心跳判活(30s 超时离线)、地址漂移自愈(NAT 场景) - **实时推送**:WebSocket 秒级推送状态/在线变化/指令结果 - **状态历史**:最新状态单行 + 历史滚动清理(每日 03:00) ## 文档 - 架构设计:[docs/design/01-architecture.md](docs/design/01-architecture.md) - 协议规范:[docs/design/02-protocol.md](docs/design/02-protocol.md) - 数据库设计:[docs/design/03-database.md](docs/design/03-database.md) - 接口规范:[docs/design/04-api.md](docs/design/04-api.md) - 联调手册:[docs/design/05-联调手册.md](docs/design/05-联调手册.md) - 建表脚本:[docs/design/schema.sql](docs/design/schema.sql)