# UDP记录回放工具 **Repository Path**: technical-navigation-studio/UdpRecorder ## Basic Information - **Project Name**: UDP记录回放工具 - **Description**: UDP记录回放工具(UDP RECORDER)是用于记录回放UDP协议数据流的工具。 - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-21 - **Last Updated**: 2025-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UDP记录回放工具 一个基于Qt框架开发的UDP数据包记录和回放工具,支持实时捕获UDP数据包并保存为文件,同时提供数据回放功能。 ## 功能特性 ### 核心功能 - **UDP数据记录**: 实时监听指定端口的UDP数据包 - **数据回放**: 将记录的UDP数据包重新发送到目标地址 - **智能文件管理**: 自动按日期和时间生成唯一的记录文件名 - **一键文件访问**: 快速打开最近记录的文件 ### 用户界面 - 直观的图形化操作界面 - 实时数据显示和日志记录 - 进度条显示文件加载状态 - 支持手动输入和下拉选择IP地址 ### 文件管理 - 自动创建按日期分类的文件夹结构 - 基于时间戳的文件命名(格式:yyyyMMdd_hhmmss.txt) - 文件路径在日志中清晰显示 - 一键打开最近记录的文件 ## 界面展示 ![UDP记录回放工具界面](UDP记录回放工具.png) *主界面包含数据记录区、回放控制区和日志显示区* ## 项目结构 ``` UdpRecorder/ ├── UdpRecorder/ # 项目源代码目录 │ ├── UdpRecorder.pro # Qt项目配置文件 │ ├── main.cpp # 程序入口点 │ ├── mainwindow.h # 主窗口类声明 │ ├── mainwindow.cpp # 主窗口类实现 │ ├── mainwindow.ui # 用户界面设计文件 │ └── myutils.h # 工具函数类 ├── release/ # 可执行文件目录 │ └── UdpRecorder-X86.zip # 主程序可执行文件 └── README.md # 项目说明文档 ``` ## 编译和运行 ### 环境要求 - Qt 6.7.0 或更高版本 - MinGW 64位编译器 - Windows操作系统 ### 编译步骤 1. 打开Qt Creator 2. 打开项目文件 `UdpRecorder/UdpRecorder.pro` 3. 选择构建套件(推荐:Desktop Qt 6.7.0 MinGW 64-bit) 4. 点击构建项目 ### 命令行编译 ```bash # 进入项目目录 cd UdpRecorder/UdpRecorder # 生成Makefile qmake # 编译项目 mingw32-make ``` ## 使用说明 ### 数据记录 1. **配置参数** - 选择或输入本机IP地址 - 设置接收端口号(1-65535) - 设置输出端口号(可选) 2. **开始记录** - 点击"开始记录"按钮 - 系统自动创建记录文件(格式:当前路径/rec/yyyyMMdd/yyyyMMdd_hhmmss.txt) - 实时显示接收到的数据包 3. **停止记录** - 点击"停止记录"按钮 - 日志区域显示记录统计信息 - 文件路径和打开提示信息 ### 数据回放 1. **加载回放文件** - 点击"加载回放文件..."按钮 - 选择之前记录的.txt文件 - 系统显示加载进度 2. **开始回放** - 设置目标IP地址和端口号 - 点击"开始回放"按钮 - 使用进度条控制回放速度 3. **停止回放** - 点击"停止回放"按钮 - 回放过程结束 ### 文件管理 - **查看记录文件**: 点击"打开最近记录文件"按钮,系统会用默认程序打开最近记录的文件 - **文件位置**: 记录文件保存在 `当前程序目录/rec/日期/` 文件夹下 - **文件名格式**: 基于记录开始时间的时间戳(如:20241221_143022.txt) ## 技术实现 ### 核心技术 - **Qt框架**: 使用Qt Widgets模块构建图形界面 - **UDP通信**: 基于QUdpSocket实现数据收发 - **多线程**: 使用QThread实现文件异步加载 - **文件操作**: QFile和QTextStream处理文件读写 ### 关键特性实现 1. **IP地址检测**: 自动获取本机所有网络接口的IP地址 2. **时间戳管理**: 精确记录数据包的接收和发送时间 3. **进度控制**: 滑块控制回放速度,实时显示进度 4. **错误处理**: 完善的输入验证和错误提示机制 ### 文件格式 记录文件为纯文本格式,每行包含一个UDP数据包: ``` 时间戳 | 数据包内容(十六进制格式) ``` ## 开发说明 ### 主要类说明 #### MainWindow类 - 主窗口控制器,管理所有UI组件和业务逻辑 - 实现UDP数据收发、文件操作、界面更新等功能 #### FileLoadWorker类 - 文件加载工作线程,负责异步读取记录文件 - 避免界面卡顿,提高用户体验 #### MyUtils工具类 - 提供十六进制转换、IP地址获取等工具函数 - 静态方法,无需实例化即可使用 ### 信号和槽机制 项目大量使用Qt的信号和槽机制实现组件间的通信: - 按钮点击事件处理 - 数据接收通知 - 文件加载进度更新 - 界面状态同步 ## 界面功能详解 ### 数据记录区 - **IP地址选择**: 下拉框显示本机所有IP地址,支持手动输入 - **端口设置**: 接收端口(必填)和输出端口(可选) - **控制按钮**: 开始记录、停止记录、打开最近记录文件 ### 回放控制区 - **文件选择**: 加载回放文件按钮和文件路径显示 - **时间信息**: 显示文件的开始时间、结束时间和当前回放时间 - **进度控制**: 滑块控制回放进度和速度 - **回放按钮**: 开始回放和停止回放 ### 数据显示区 - **数据接收**: 实时显示接收到的UDP数据包内容 - **日志信息**: 显示操作记录、错误信息和文件路径 ## 版本历史 ### v1.0 (当前版本) - 基础UDP数据记录功能 - 数据回放功能 - 图形化用户界面 - 智能文件管理 - 一键文件访问 ## 许可证 本项目采用开源许可证,具体信息请查看LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 项目Issue页面 - 开发者邮箱 --- *最后更新: 2025年12月21日*