迅为三星4412开发板UDP实现服务器和客户端

news2024/12/22 20:01:01

UDP 协议是开放式,无连接,不可靠的传输层通信协议,但它收发数据的速度相对于 TCP 快很多,常

用在传输音视频等数据量非常大的场合。

udp 网络编程只需要使用一个类 QUdpSocket。

本实验中对 QUdpSocket 的基本使用:

1.创建 QUdpSocket 对象。

2.绑定端口号

3.数据到来触发 readyRead()信号。

4.读取发送数据。

5.关闭。

具体步骤:

步骤一:组装 ui 界面,和 TCP 章节搭建 UI 界面方法一致。

步骤二:编写代码

1.创建 QUdpSocket 对象,使用 bind 函数绑定端口号和套接字,数据报到来后会发出信 号

readyRead(),在绑定的槽函数内去读取数据。

2.读取数据,数据到来 hasPendingDatagrams()返回 true,再用 pendingDatagramSize()获取数据报的长

度,如果数据没有被读取

完,hasPendingDatagrams()就会返回 true,直至数据都被读取完。

readDatagram(data,size);

参数 data 为读取的数据,size 为数据长度。

3.发送数据,使用 writeDatagram 函数,

writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port);

Data:发送的数据。

Len:发送的数据长度。

Host:目标 IP 地址。

Port:目标端口号。

4.关闭 socket 套接字。

代码如下:

udp.h

#include <QMainWindow>

#include <QUdpSocket>

namespace Ui {

class Udp;

}

class Udp : public QMainWindow

{

Q_OBJECT

public:

explicit Udp(QWidget *parent = 0); ~Udp();

QUdpSocket * udpSocket;

private slots:

void on_pushButton_clicked();

void readyRead_Slot(void);

void on_pushButton_3_clicked();

void on_pushButton_2_clicked();

private:

Ui::Udp *ui;

};

udp.cpp:

Udp::Udp(QWidget *parent) :

QMainWindow(parent), ui(new Ui::Udp)

{

ui->setupUi(this);

udpSocket = new QUdpSocket(this);

}

Udp::~Udp()

{

delete ui;

}

/*

* 打开按钮

*/

void Udp::on_pushButton_clicked()

{

//绑定本端口的端口号

if(udpSocket->bind(ui->cliEdit->text().toUInt()) == true){

QMessageBox::information(this,"提示","成功");

}else{

QMessageBox::information(this,"提示","失败");

}

//绑定数据信号和槽函数

connect(udpSocket,SIGNAL(readyRead()),this,SLOT(readyRead_Slot()));

}

/*

*读取数据槽函数

*/

void Udp::readyRead_Slot()

{

QString buf;

QByteArray array;

//hasPendingDatagrams()返回 true 时表示至少有一个数据报在等待被读取

while(udpSocket->hasPendingDatagrams()){

//获取数据

array.resize(udpSocket->pendingDatagramSize());

udpSocket->readDatagram(array.data(),array.size());

buf = array.data();

ui->recvEdit->appendPlainText(buf);

}

}

/*

* 发送数据

*/

void Udp::on_pushButton_3_clicked()

{

quint16 port;

QString sendBuff;

QHostAddress address;

address.setAddress(ui->ipEdit->text());//目标机地址

port = ui->portEdit->text().toInt();//目标机端口号

sendBuff = ui->sendEdit->text();//发送的数据

//发送

udpSocket->writeDatagram(sendBuff.toLocal8Bit().data(),sendBuff.length(),address,port);

}

/*

*关闭

*/

void Udp::on_pushButton_2_clicked()

{

udpSocket->close();

}

步骤三:运行测试,收发功能正常如图:

更多内容可以了解迅为三星4412开发板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择DAO的组织结构时,应着重考虑的各个关键阶段与安全可靠性

近年来&#xff0c;去中心化自治组织 (Decentralized Autonomous Organizations&#xff0c;DAO)已成为了管理智能合约项目和社区的流行方式。简单而言&#xff0c;DAO是一个基于智能合约运作的数字化组织。组织内的成员可以根据对应的模型结构&#xff0c;做出不同的决策。虽然…

哪款蓝牙耳机学生用合适?学生党平价无线耳机推荐

近年来&#xff0c;蓝牙耳机凭借使用便捷&#xff0c;成为了许多人生活中不可或缺的一部分。不管是听歌、追剧还是玩游戏&#xff0c;或者运动等等&#xff0c;都能看到戴蓝牙耳机的人。那么&#xff0c;哪款蓝牙耳机适合学生用&#xff1f;下面&#xff0c;我来给大家推荐几款…

Unsupervised Learning of Depth and Ego-Motion from Video 论文精读

视频中深度和自我运动的无监督学习 摘要 我们提出了一个无监督学习框架&#xff0c;用于从非结构化视频序列中进行单眼深度和相机运动估计。与其他工作[10&#xff0c;14&#xff0c;16]一样&#xff0c;我们使用端到端的学习方法&#xff0c;将视图合成作为监督信号。与之前…

C++ 线程

linux使用线程 在linux使用线程可能出现&#xff0c;在编译时不会报错&#xff0c;但执行出错的问题。 undefined reference to pthread_create这是由于ubuntu平台下调用pthread_create()函数&#xff0c;pthread 库不是 Linux 系统默认的库&#xff0c;连接时需要使用静态库 …

Word转PDF:简单步骤,轻松完成!推荐两个实现的方法

随着社会的发展&#xff0c;PDF 文件已经成为一种非常流行的文件格式&#xff0c;对于一些需要对文件进行保密的企业而言&#xff0c;更是必不可少。在这样的大背景下&#xff0c;如何将 Word 文件转换为 PDF 文件呢&#xff1f;下面是一些简单的步骤&#xff0c;帮助您轻松完成…

Rust-Shyper:基于 Rust 语言的高可靠、开源嵌入式 Hypervisor

「Rust-Shyper 是北京航空航天大学计算机学院王雷教授团队设计开发的虚拟机监控器&#xff0c;该系统基于 Rust 语言&#xff0c;实现了一个高可靠、嵌入式 Hypervisor。2023 年 2 月 15 日 Rust-Shyper 正式在 openEuler 社区开源。」 项目地址&#xff1a;https://gitee.com…

论文阅读笔记:Hearing Lips Improving Lip Reading by Distilling Speech Recognizers

目录 论文链接 研究背景 LIBS 的整体框架 序列级知识蒸馏 上下文级知识蒸馏 最长公共子序列 (LCS) 帧级别知识蒸馏 论文链接 [1911.11502] Hearing Lips: Improving Lip Reading by Distilling Speech Recognizers (arxiv.org) 研究背景 这篇文章针对由于唇语识别动作…

【观察】解码“一网统管”:城市治理“新范式”,推动数字城市建设迈向“新高度”...

众所周知&#xff0c;随着城市化进程加快&#xff0c;大量的人员、物资、技术和信息等要素日益向城市汇聚&#xff0c;城市系统变得越来越复杂&#xff0c;随之而来的社会问题和“城市病”也层出不穷&#xff0c;而传统的治理模式和治理手段越来越难以胜任日益复杂城市的管理需…

深聊丨第四范式陈雨强:如何用AI大模型打开万亿规模传统软件市场?

文丨亲爱的数据 谭婧 “GPT大模型到底能不能用&#xff1f;用在哪里&#xff1f;” 这是目前中国大型企业一把手最关心的问题之一。AI大模型也被媒体称为“一把手”工程。 大型企业会非常认真地考虑大模型的应用。最近个把月&#xff0c;大型企业客户对大模型的热烈反应让第四范…

进程状态以及两种特殊进程

目录 进程状态1 具体状态2 进程状态的意义3 进程状态实例3.1 R&S&T认识3.2 认识Z & 僵尸进程 & 孤儿进程僵尸进程孤儿进程 进程状态 为了弄明白正在运行的进程是什么意思&#xff0c;我们需要知道进程的不同状态。一个进程可以有几个状态&#xff08;在Linux内…

==、equals区别 | java学习笔记

做一些java基础知识的记录&#x1f4d5; java基本类型&#xff1a;byte short int long float double char boolean&#xff08;指向具体的数值&#xff09; java引用类型&#xff1a;类 接口 数组等。指向的不是具体的数值&#xff0c;而是指向了对象的地址。 用于判断基本类…

JavaWeb|在IDEA中创建基于Maven的Web项目| Servlet依赖|这一篇就够了(超详细)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

【c语言】详解c语言#预处理期过程 | 宏定义前言

c语言系列专栏&#xff1a; c语言之路重点知识整合 创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持…

微信小程序php+python+nodejs+vue大学生心理健康测试职位推荐系统

心理测试开发使系统能够更加方便学生捷&#xff0c;同时也促使心理测试变的更加系统化、有序化。系统界面较友好&#xff0c;易于操作。具体在系统设计上&#xff0c;客户端使用微信开发者&#xff0c;后台也使用php技术在动态页面上进行了设计&#xff0c;Mysql数据库&#xf…

算法 DAY44 动态规划6 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

Java每日一练(20230427)

目录 1. 螺旋矩阵 2. LRU 缓存机制 3. 解数独 &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#…

Leetcode——495. 提莫攻击

&#x1f4af;&#x1f4af;欢迎来到的热爱编程的小K的Leetcode的刷题专栏 文章目录 1、题目2、题目分析3、题解代码 1、题目 题目链接&#xff1a;Leetcode——495. 提莫攻击 在《英雄联盟》的世界中&#xff0c;有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希&…

国民技术N32G430开发笔记(1)-macos开发环境搭建

macos开发环境搭建 1、安装arm-none-eabi- 工具链 brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc如果没有安装brew&#xff0c;请先安装brew。 2、安装vscode 3、安装pyocd a、python官网下载最新版的python b、pip3 install -U pyocd 我的开发板为N3…

Hadoop 1:Apache Hadoop、HDFS

Hadoop核心组件 Hadoop HDFS&#xff08;分布式文件存储系统&#xff09;&#xff1a;解决海量数据存储 Hadoop YARN&#xff08;集群资源管理和任务调度框架&#xff09;&#xff1a;解决资源任务调度 Hadoop MapReduce&#xff08;分布式计算框架&#xff09;&#xff1a;解决…

MyBatis的代理开发方式、动态sql语句和typeHandlers和plugins标签实战

文章目录 Mybatis的Dao层实现传统开发方式编写UserDao接口编写UserDaoImpl实现mapper文件测试传统方式 代理开发方式代理开发方式介绍编写UserMapper接口测试代理方式 MyBatis映射文件深入动态sql语句动态sql语句概述动态 SQL 之<if>动态 SQL 之<foreach>SQL片段抽…