# UDPCommunication **Repository Path**: bistu_liuning_admin_admin/UDPCommunication ## Basic Information - **Project Name**: UDPCommunication - **Description**: UDP通信系统 - 服务器端(Qt/C++)、PC客户端(Qt/C++)、Android客户端(Java) - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-26 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UDP 通信系统 基于 UDP 协议的网络通信系统,包含服务器端程序和客户端程序(PC端和Android手机端)。 ## 项目结构 ``` IntenetCheck/ ├── Server/ # 服务器端 (Qt/C++) ├── PcClient/ # PC客户端 (Qt/C++) ├── AndroidClient/ # Android客户端 (Java) ├── spec.md # 规格说明文件 ├── task_list.md # 任务列表 └── check_list.md # 检查清单 ``` ## 系统架构 ``` ┌─────────────────┐ ┌─────────────────┐ │ PC客户端 │ │ 服务器端 │ │ (Qt/C++) │────── UDP ───────▶│ (Qt/C++) │ └─────────────────┘ └─────────────────┘ ▲ ┌─────────────────┐ │ │ Android客户端 │ │ │ (Java) │────── UDP ────────────────┘ └─────────────────┘ ``` --- ## 一、服务器端 (Server) ### 1.1 程序架构 ``` Server/ ├── Server.pro # Qt项目配置文件 ├── main.cpp # 程序入口 ├── mainwindow.h/cpp # 主窗口类 - 界面控制逻辑 ├── mainwindow.ui # Qt Designer界面文件 ├── udpserver.h/cpp # UDP服务器核心类 - 网络通信 └── build/ # 编译输出目录 └── release/ └── UdpServer.exe ``` ### 1.2 核心类设计 #### UdpServer 类 ```cpp class UdpServer : public QObject { // UDP Socket监听与数据接收 - QUdpSocket *m_socket - quint16 m_listenPort + startListening(quint16 port) // 开始监听 + stopListening() // 停止监听 + isListening() // 检查监听状态 signals: + messageReceived(MessageRecord) // 消息接收信号 + errorOccurred(QString) // 错误信号 } ``` #### MessageRecord 结构 ```cpp struct MessageRecord { QDateTime timestamp; // 时间戳 QString sourceIp; // 来源IP quint16 sourcePort; // 来源端口 QString content; // 消息内容 }; ``` ### 1.3 功能特性 - UDP Socket 监听与数据接收 - 消息列表显示(时间、IP、端口、内容) - 自动滚动功能 - 日志导出(TXT格式) - 状态统计 ### 1.4 编译步骤 ```powershell # 设置Qt环境变量 $env:PATH = "C:\Qt\6.8.1\mingw_64\bin;C:\Qt\Tools\mingw1310_64\bin;$env:PATH" # 进入项目目录 cd Server # 创建构建目录 mkdir build; cd build # 生成Makefile qmake ../Server.pro # 编译 mingw32-make ``` ### 1.5 运行 可执行文件位置:`Server/build/release/UdpServer.exe` --- ## 二、PC客户端 (PcClient) ### 2.1 程序架构 ``` PcClient/ ├── PcClient.pro # Qt项目配置文件 ├── main.cpp # 程序入口 ├── mainwindow.h/cpp # 主窗口类 - 界面控制逻辑 ├── mainwindow.ui # Qt Designer界面文件 ├── udpclient.h/cpp # UDP客户端核心类 - 网络通信 └── build/ # 编译输出目录 └── release/ └── UdpClient.exe ``` ### 2.2 核心类设计 #### UdpClient 类 ```cpp class UdpClient : public QObject { - QUdpSocket *m_socket - QTimer *m_periodicTimer // 定时发送计时器 - QString m_targetIp - quint16 m_targetPort + sendMessage(ip, port, message) // 发送消息 + startPeriodicSend(ip, port, msg, interval) // 开始定时发送 + stopPeriodicSend() // 停止定时发送 signals: + messageSent(message, ip, port) + sendError(error) } ``` ### 2.3 功能特性 - UDP 消息发送 - 单次发送/定时发送模式 - 服务器IP/端口配置 - 发送内容自定义 - 发送间隔配置 - 配置保存/加载(QSettings) ### 2.4 编译步骤 ```powershell # 设置Qt环境变量 $env:PATH = "C:\Qt\6.8.1\mingw_64\bin;C:\Qt\Tools\mingw1310_64\bin;$env:PATH" # 进入项目目录 cd PcClient # 创建构建目录 mkdir build; cd build # 生成Makefile qmake ../PcClient.pro # 编译 mingw32-make ``` ### 2.5 运行 可执行文件位置:`PcClient/build/release/UdpClient.exe` --- ## 三、Android客户端 (AndroidClient) ### 3.1 程序架构 ``` AndroidClient/ ├── app/ │ ├── src/main/ │ │ ├── java/com/example/udpclient/ │ │ │ ├── MainActivity.java # 主活动 - 界面控制 │ │ │ ├── UdpSender.java # UDP发送类 - 网络通信 │ │ │ └── NetworkUtils.java # 网络工具类 │ │ ├── res/ │ │ │ ├── layout/activity_main.xml │ │ │ ├── values/strings.xml │ │ │ └── drawable/ │ │ └── AndroidManifest.xml │ └── build.gradle ├── build.gradle ├── settings.gradle ├── gradle.properties └── local.properties ``` ### 3.2 核心类设计 #### UdpSender 类 ```java public class UdpSender { private DatagramSocket socket; private ExecutorService executorService; // 异步执行 private Handler mainHandler; // 主线程Handler + sendMessage(ip, port, message, callback) // 发送消息 + startPeriodicSend(ip, port, msg, interval, callback) // 定时发送 + stopPeriodicSend() // 停止定时发送 + close() // 释放资源 interface SendCallback { onSuccess(message, ip, port) onError(error) } } ``` #### NetworkUtils 工具类 ```java public class NetworkUtils { + isValidIp(String ip) // 验证IP地址 + isValidPort(int port) // 验证端口号 + isNetworkAvailable(Context) // 检查网络状态 } ``` ### 3.3 功能特性 - UDP 消息发送 - 单次发送/定时发送模式 - 服务器IP/端口配置 - 发送内容自定义 - 发送间隔配置 - 配置保存(SharedPreferences) - 网络状态检测 ### 3.4 编译步骤 ```powershell # 设置环境变量 $env:JAVA_HOME = 'C:\Program Files\Android\Android Studio\jbr' $env:ANDROID_HOME = 'C:\Users\{用户名}\AppData\Local\Android\Sdk' # 进入项目目录 cd AndroidClient # 编译调试版APK .\gradlew.bat assembleDebug ``` ### 3.5 编译输出 APK 文件位置:`AndroidClient/app/build/outputs/apk/debug/app-debug.apk` --- ## 四、编译环境 ### 4.1 Qt 项目环境 | 组件 | 版本 | |------|------| | Qt | 6.8.1 | | 编译器 | MinGW 13.1.0 (64-bit) | | 构建系统 | qmake | ### 4.2 Android 项目环境 | 组件 | 版本 | |------|------| | JDK | Android Studio JBR | | Android SDK | API 35 | | Gradle | 8.2 | | Android Gradle Plugin | 8.1.0 | | minSdk | 21 (Android 5.0) | | targetSdk | 35 | --- ## 五、调试说明 ### 5.1 服务器端调试 1. 启动 UdpServer.exe 2. 设置监听端口(默认 8888) 3. 点击"开始监听" 4. 观察接收到的消息 ### 5.2 PC客户端调试 1. 启动 UdpClient.exe 2. 配置服务器IP地址和端口 3. 输入发送内容 4. 选择发送模式(单次/定时) 5. 点击发送 ### 5.3 Android客户端调试 1. 安装 app-debug.apk 到手机 2. 确保手机与服务器在同一网络 3. 配置服务器IP地址和端口 4. 输入发送内容 5. 点击发送 ### 5.4 联调测试 1. 先启动服务器端 2. 分别启动PC客户端和Android客户端 3. 配置正确的服务器IP和端口 4. 发送测试消息 5. 验证服务器是否正确接收 --- ## 六、常见问题 ### Q1: Qt程序无法运行 **解决方案**: 需要将 Qt 的 bin 目录添加到 PATH,或使用 `windeployqt` 部署依赖。 ```powershell windeployqt UdpServer.exe ``` ### Q2: Android编译失败 **解决方案**: - 确保 JAVA_HOME 正确配置 - 确保 ANDROID_HOME 正确配置 - 检查 SDK 版本是否匹配 ### Q3: 消息发送失败 **解决方案**: - 检查网络连接 - 确认服务器已启动监听 - 检查防火墙设置 - 确认IP地址和端口正确 --- ## 七、版本历史 | 版本 | 日期 | 说明 | |------|------|------| | 1.0.0 | 2026-02-26 | 初始版本,完成UDP通信功能 |