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发送和接收-开发者知识库平台 - 辰迅云
相关文章:
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> //…...
代码整洁之道(第3章节)--函数
目录 3.1 短小 3.2 只做一件事 3.3 每个函数一个抽象层级 3.4switch语句 3.5 使用描述性的名称 3.6 函数参数 3.6.1 一元函数的普遍形式 3.6.2标识参数 3.6.3 二元函数 3.6.4 三元函数 3.6.5参数对象 3.6.6参数列表 3.6.7动词与关键字 3.8分隔指令与询问 3.9使用…...
92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果
在正常游戏里,有些伤害技能会携带一些负面效果,比如火焰伤害的技能会携带燃烧效果,敌人在受到伤害后,会接受一个燃烧的效果,燃烧效果会在敌人身上持续一段时间,并且持续受到火焰灼烧。 我们将在这一篇文章里…...
Echarts可视化大屏数据详解
1、ECharts介绍 1.1、什么是ECharts ECharts是一款由百度开发并开源的数据可视化图表库,旨在帮助开发者通过简单易用的方式实现复杂的数据展示和分析需求。它完全基于 JavaScript 开发,利用 HTML5 的 Canvas 技术进行图形渲染,这使得它能够…...
Linux---文件(2)---文件描述符缓冲区(语言级)
目录 文件描述符 基础知识 文件描述符 对“Linux一切皆文件”的理解 文件描述符分配规则 缓冲区 刷新策略 存放位置 解释一个"奇怪的现象" 格式化输入输出 文件描述符 基础知识 在系统层面上,文件操作都是通过文件描述符来操作的。 程序在启…...
云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
一、Harbor部署 1.验证python版本 [rootdocker2 ~]#python --version 2.安装pip [rootdocker2 ~]# yum -y install python2-pip #由于版本过低,需要对其进行一个升级 #更新pip [rootdocker2 ~]#pip install --upgrade pip 3.指定版本号 [rootdocker2 ~]# p…...
lambda表达式用法——C#学习笔记
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 实例如下: 代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.…...
【C++ Primer Plus习题】11.6
问题: 解答: main.cpp #include <iostream> #include "Stonewt.h" using namespace std; const int SIZE 6;int main() {Stonewt stone_arr[SIZE] { 253.6,Stonewt(8,0.35),Stonewt(23,0) };double input;Stonewt eleven Stonewt(11, 0.0);Stonewt max st…...
Redis八种数据结构简介
Redis数据结构 Redis新旧版本中一共出现过八种数据结构,分别是SDS、双向链表、压缩列表、整数集合、哈希表、跳表、quicklist、listpack。 SDS SDS是用于存储Redis中字符串的数据结构,Redis底层使用的语言是C语言,因此字符串也是C语言的字…...
数据治理策略:确保数据资产的安全与高效利用
数据治理策略:确保数据资产的安全与高效利用 在数字化时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为企业面临的重要挑战。数据治理策略的制定和执行&a…...
ts格式转mp4,四款亲测好用软件推荐!
在这个数字视频时代,我们经常会遇到各种视频格式兼容性问题,尤其是从网络下载的高清电影或电视剧集,很多时候都是以TS格式存储。然而,当我们想要在移动设备、社交媒体或视频编辑软件中播放、上传时,MP4格式因其广泛的兼…...
10、Django Admin修改标题
admin from django.contrib import admin from .models import Category, Origin, Hero, Villain # 添加以下代码 admin.site.site_header "系统管理" admin.site.site_title "管理员界面" admin.site.index_title "欢迎来到这里ÿ…...
ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
ESRI ArcGIS Pro 3.1.5 主要新功能包括: 改进的数据编辑和管理:支持更多数据格式和更精细的属性表操作。增强的空间分析工具:新增和优化空间分析工具,提高数据分析效率。更好的3D可视化:改进3D渲染性能,支…...
人工智能,语音识别也算一种人工智能。
现在挺晚了,还是没有去睡觉,自己在想什么呢,也不确定。 这是一篇用语音写的文章,先按自己的想法说出来,然后再适当修改,也许就是一个不错的文章。 看来以后就不需要打字了,语音识别度很高&#…...
Token和Refresh Token
获取令牌(Token) 和 刷新令牌(Refresh Token) 在认证和授权机制中有不同的使用场景和目的,二者主要的区别和为什么需要刷新令牌可以通过以下几点解释: 1. 获取令牌和刷新令牌的区别 获取令牌(Token&#x…...
STM32(一)简介
一、stm32简介 1.外设接口 通过程序配置外设来完成功能 2.系统结构 3.引脚定义 4.启动配置 5.最小系统电路...
接口测试工具:Postman详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性…...
Linux中全局变量配置,/etc/profile.d还是/etc/profile
全局环境变量可以放在 /etc/profile 或 /etc/profile.d/ 中,但两者的使用方式和目的有所不同: /etc/profile 作用: /etc/profile 是一个系统范围的启动脚本,在用户登录时执行。它主要用于设置全局环境变量和配置,适用于所有用户。…...
【java入门】关键字、标识符与变量初识
🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养ǹ…...
Java常用类库
Java常用类库 1. **Java基础类库**1.1 **java.lang**1.2 **java.util**1.3 **java.io**1.4 **java.nio**1.5 **java.time** 2. **第三方类库**2.1 **Apache Commons**2.2 **Google Guava**2.3 **Jackson**2.4 **Lombok** 3. **Spring相关类库**4. **并发类库**4.1 **java.util.…...
claw-code 源码分析:结构化输出与重试——`structured_output` 一类开关如何改变「可解析性」与失败语义?
涉及源码:src/query_engine.py、src/runtime.py、src/main.py;Rust rust/crates/tools/src/lib.rs(StructuredOutput 工具);对照 rust/crates/claw-cli/src/app.rs(OutputFormat,与 Python 开关…...
为什么你的RAG应用训练成本比同行高3.8倍?(向量索引冗余、Embedding缓存泄漏、Prompt编译失效三大黑洞)
第一章:AI原生软件研发成本优化实战技巧 2026奇点智能技术大会(https://ml-summit.org) AI原生软件的研发成本常被低估,尤其在模型训练、推理服务部署与持续迭代阶段。合理利用工具链、架构分层与资源调度策略,可在不牺牲质量的前提下显著降…...
【分析思考】银行AI转型:从“技术替换“到“价值重构“
引言:历史的回声——电动机革命的现代启示 历史背景补充:19世纪80年代,电力开始商业化应用。但直到20世纪20年代,美国工厂电气化才基本完成,历时近40年。这段延迟不是因为电力技术不成熟,而是因为生产组织方式的变革滞后于动力技术的变革。 关键洞察:电动机(1888年实用…...
JMeter线程数、用户数与TPS关系的深度解析与优化策略
1. JMeter线程数与用户数的本质区别 很多刚接触性能测试的同学容易把JMeter线程数直接等同于系统支持的用户数,这是一个典型的认知误区。我刚开始做压测时也犯过同样的错误,直到某次项目中发现500线程压测结果和实际用户访问量对不上,才意识…...
ccmusic-database在音乐平台的应用案例:自动打标、歌单智能分发落地实践
ccmusic-database在音乐平台的应用案例:自动打标、歌单智能分发落地实践 音乐平台每天都会涌入海量的新歌曲,如何快速准确地对这些歌曲进行分类打标,并智能地分发给喜欢相应风格的用户,一直是行业面临的挑战。ccmusic-database音…...
若依ruoyi框架单点登录实战:从零到一接入统一认证系统
1. 业务场景与需求分析 在企业级应用开发中,多系统间的身份认证一直是痛点。想象一下,员工每天要在OA、CRM、ERP等不同系统间反复登录,既影响效率又增加密码管理负担。这就是统一认证系统(单点登录)要解决的核心问题—…...
开源中国全栈式AI教育解决方案:从算力调度到人才培养的闭环实践
在北京教育装备展示会的聚光灯下,开源中国以其教育业务的战略升级成为行业焦点。这家以开发者社区起家的科技企业,正通过构建覆盖K12至高等教育的全学段AI基础设施,重塑教育数字化转型的底层逻辑。其推出的国产化算力异构调度平台、"模力…...
NCMDump终极指南:3步快速解锁网易云音乐NCM加密文件
NCMDump终极指南:3步快速解锁网易云音乐NCM加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在其他播放器使用而烦恼吗?NCMDump是一款强大的开源工具࿰…...
终极命令行工具:如何用BaiduPCS-Go高效管理百度网盘文件
终极命令行工具:如何用BaiduPCS-Go高效管理百度网盘文件 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 在当今数据驱动的时代,高效…...
AMD Ryzen SDT调试工具:释放处理器潜能的终极硬件控制方案
AMD Ryzen SDT调试工具:释放处理器潜能的终极硬件控制方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...
