这是一个基于UDP的通信项目,包含两个可执行程序和一个公共库。
├── common/ # 公共库(头文件)
│ ├── Packet_GPS.h # GPS数据包定义
│ ├── udp_handler.h # UDP处理类
│ └── CMakeLists.txt # common库构建配置
├── PC_A/ # 程序A(发送端)
│ ├── main.cpp # 主程序
│ └── CMakeLists.txt # PC_A构建配置
├── PC_B/ # 程序B(接收端)
│ ├── main.cpp # 主程序
│ └── CMakeLists.txt # PC_B构建配置
├── CMakeLists.txt # 主构建配置
├── build.bat # Windows构建脚本
└── README.md # 说明文档
直接运行构建脚本:
build.bat- 创建构建目录:
mkdir build
cd build- 配置项目:
cmake .. -G "Visual Studio 17 2022" -A x64- 构建项目:
cmake --build . --config Release- 配置项目:
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64- 打开生成的解决方案文件:
start UDPCommunication.sln- 在Visual Studio中构建项目
构建完成后,可执行文件位于:
build/bin/Release/PC_A.exe- 发送端程序build/bin/Release/PC_B.exe- 接收端程序
- 先启动PC_B(接收端):
build\bin\Release\PC_B.exe- 再启动PC_A(发送端):
build\bin\Release\PC_A.exe- PC_A: GPS数据发送端,监听7777端口,向8888端口发送GPS位置数据
- PC_B: 数据接收端,监听9999端口,接收并解析GPS数据,向7777端口发送确认数据
- common: 包含UDP通信处理类和GPS数据包定义
common是一个header-only库,可以通过以下方式在其他工程中使用:
#include "path/to/common/Packet_GPS.h"
#include "path/to/common/udp_handler.h"- 安装common库:
cd build
cmake --build . --target install- 在其他CMake项目中使用:
find_package(common REQUIRED)
target_link_libraries(your_target PRIVATE common::common)将整个common目录复制到你的项目中,然后在CMakeLists.txt中:
add_subdirectory(common)
target_link_libraries(your_target PRIVATE common)- Windows SDK
- Visual Studio 2019或更高版本(或其他支持C++17的编译器)
- CMake 3.16或更高版本
- common是header-only库,所有实现都在头文件中
- 项目使用C++17标准
- 自动链接Windows Sockets库(ws2_32.lib)
- 支持Debug和Release两种构建配置
- 默认启动项目为PC_A
- common库支持通过find_package在其他项目中使用