当前位置: 首页 > news >正文

RK3588开发板利用udp发送和接收数据

目录

1 send.cpp

2 receive.cpp

3 编译运行

4 测试


1 send.cpp

#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> // 添加这个头文件
#include <thread>void sendData() {int sockfd;struct sockaddr_in serverAddr;// 创建UDP socketsockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd < 0) {std::cerr << "Failed to create socket" << std::endl;return;}// 设置服务器地址和端口serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(12345);serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");while (true) {// 发送数据std::string message = "Hello, UDP!";sendto(sockfd, message.c_str(), message.length(), 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));std::cout << "Sent: " << message << std::endl;sleep(1); // 每秒发送一次}close(sockfd);
}int main() {std::thread sender(sendData);sender.join(); // 等待发送线程结束return 0;
}

2 receive.cpp

#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <thread>void receiveData() {int sockfd;struct sockaddr_in serverAddr, clientAddr;socklen_t addrLen = sizeof(clientAddr);char buffer[1024];// 创建UDP socketsockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd < 0) {std::cerr << "Failed to create socket" << std::endl;return;}// 设置服务器地址和端口serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(12345);serverAddr.sin_addr.s_addr = INADDR_ANY;// 绑定地址和端口bind(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr));while (true) {// 接收数据int bytesReceived = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&clientAddr, &addrLen);buffer[bytesReceived] = '\0';std::cout << "Received: " << buffer << std::endl;}close(sockfd);
}int main() {std::thread receiver(receiveData);receiver.join(); // 等待接收线程结束return 0;
}

3 编译运行

g++ -o receive_test receive.cpp  -lpthread
g++ -o send_test send.cpp -lpthread

4 测试

直接把板子连接到我家的电视上,

参考文献:C++怎么实现udp发送和接收-开发者知识库平台 - 辰迅云

http://www.lryc.cn/news/430795.html

相关文章:

  • 代码整洁之道(第3章节)--函数
  • 92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果
  • Echarts可视化大屏数据详解
  • Linux---文件(2)---文件描述符缓冲区(语言级)
  • 云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
  • lambda表达式用法——C#学习笔记
  • 【C++ Primer Plus习题】11.6
  • Redis八种数据结构简介
  • 数据治理策略:确保数据资产的安全与高效利用
  • ts格式转mp4,四款亲测好用软件推荐!
  • 10、Django Admin修改标题
  • ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
  • 人工智能,语音识别也算一种人工智能。
  • Token和Refresh Token
  • STM32(一)简介
  • 接口测试工具:Postman详解
  • Linux中全局变量配置,/etc/profile.d还是/etc/profile
  • 【java入门】关键字、标识符与变量初识
  • Java常用类库
  • 2024年高教社杯数学建模国赛C题超详细解题思路分析
  • 深度学习(七)-计算机视觉基础
  • 机器人笛卡尔空间轨迹规划原理与MATLAB实现
  • 数据结构:树与二叉树
  • BUUCTF—[网鼎杯 2020 朱雀组]phpweb
  • 什么是CDN及其如何影响SEO?
  • python实现粒子群算
  • 【Unity案例】搭建射击系统与UI
  • Python使用zdppy_mysql操作MySQL和MariaDB数据库快速入门教程
  • union 的正确食用方法
  • 汇编语言在虚拟机中输出“Hello World!”