Qt 利用UDP进行通信

news2024/11/15 13:25:47

一、UDP的特点

UDP(用户数据报协议)是一种简单轻量级、不可靠、面向数据报,无连接的传输层协议。而TCP/IP协议却是有连接的

二、UDP适合应用的几种情况

1、网络数据大多为短消息

2、拥有大量客户端

3、对数据安全性无特殊要求

4、网络负担非常重,但对响应速度要求高。

三、利用UDP进行网络通信

因为upd是无连接的,所以两个通信设备之间不需要建立连接,只要知道对方的IP地址和端口号就行了。

我们首先创建一个项目,这个项目需要用到ui界面,所以我们还是使用Qtdesigner,并且还要给它布好局。

首先我们需要绑定端口号,如果在同一台电脑上测试IP地址可以不需要绑定,绑定的时候我们用到bind()函数。

CSDN QT大纲:Qt开发必备技术栈学习路线和资料

例:

udpsocket->bind(8000);

接收数据

当接收到数据的时候,socket会自动触发readyRead这个信号,所以需要写一个参函数来处理这个信号,也就是读取socket接收到的数据。

接收数据的时候我们需要用到这个一个函数

readDatagram(char *data, qint64 maxSize, QHostAddress *address = Q_NULLPTR, quint16 *port = Q_NULLPTR)

这个函数的参数的含义如下

1、将读取的内容存放在data中

2、读取的长度

3、对方的ip地址

4、对方的端口号

最后将读取的内容显示在文本编辑框里就可以了。

发送数据

发送数据的步骤和读取数据的步骤差不多的,首先需要获取界面中的端口,ip地址和文本编辑框中的内容,然后通过writeDatagram()这个函数来发送。

writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port)

这个函数的参数含义如下

1、需要发送的消息

2、对方的IP地址

3、对方的端口号

四、发送和接收的代码

发送

 1 void Widget::on_pushButtonwrite_clicked()
 2 {
 3     //获取对方的端口号和ip
 4     QString ip = ui->lineEditip->text();
 5     quint16 port = ui->lineEditport->text().toInt();
 6  
 7     //获取文本框的内容
 8     QString str = ui->textEdit->toPlainText();
 9  
10     //将信息发送给指定的ip
11     udpsocket->writeDatagram(str.toUtf8(), (QHostAddress)ip, port);
12 }

接收

 1 void Widget::readData()
 2 {
 3     char buf[1024] = {0};
 4     QHostAddress addr; //对方的ip
 5     quint16 port; //对方的端口
 6     qint64 len;
 7     len = udpsocket->readDatagram(buf, sizeof(buf), &addr, &port);
 8     {
 9         if(len > 0)
10         {
11             QString str = QString("[%1:%2]  %3").arg(addr.toString()).arg(port).arg(buf);
12             ui->textEdit->setText(str);
13         }
14     }
15 }

编译运行之后如下图

 我这里因为需要两个窗口进行通信,所以将另一个程序的端口号改成了8888。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

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

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

相关文章

pmap gdb 分析堆外内存泄露情况

一、查看内存分部 pmap -x 8 | sort -k3 -n -r | more ---- 8 是 PID 最大的肯定是堆内存。 其他的就需要看情况来分析了。 二、cat /proc/8/smaps | grep 7fad64000000 -- 8 是 PID , 地址的前4个0需要去掉。查到起止内存地址。 7fad64000000-7fad68000000 r…

Bioinformatics2019 | FP2VEC+:基于新分子特征的分子性质预测

论文标题:FP2VEC:a new molecular featurizer for learning molecular properties 代码: GitHub - wsjeon92/FP2VEC 预测化合物性质最成功的方法之一是定量结构-活性关系(QSAR)方法。 Mol2vec使用分子子结构表将分子结构表示为类似于分子指…

甘露糖-聚乙二醇-CY5 Cy5-PEG-mannose

甘露糖-聚乙二醇-CY5 Cy5-PEG-mannose 中文名称:甘露糖-菁染料CY5 英文名称:mannose-Cyanine5 别称:CY5标记甘露糖,CY5-甘露糖 存储条件:-20C,避光,避湿 外观:固体或粘性液体,取…

设计模式之美——实战MVC的意义

对于一个工程师来说,如果要追求长远发展,你就不能一直只把自己放在执行者的角色,不能只是一个代码实现者,你还要有独立负责一个系统的能力,能端到端(end to end)开发一个完整的系统。这其中的工…

《机械工程基础》复习题

一、填空题: 1. 构件由于受力不同,会产生不同的变形。基本形式有以下五种:1. 弯曲 ;2. 扭转 ; 3. 剪切 ;4. 轴向拉伸 ;5. 轴向压缩 。 2. 在机器中,运动的基本单元称之为__机构_ ___…

ip-guard安全网关问题集锦一

1、忘记安全网关Web管理界面的登录密码如何处理? 重置安全网关Web管理界面的登录密码操作如下: 1、把网线连接电脑和网管的emp端口。 2、修改电脑的Ip为190.190.190.x,子网掩码:255.255.0.0。 3、电脑上访问http://190.190.190.1…

Django Web框架的使用

1.前言 Django是基于Python的重量级开源Web框架。Django拥有高度定制的ORM和大量的API,简单灵活的视图编写、优雅的url、适用于快速开发的模板以及强大的管理后台。 Django简介可以查看菜鸟教程 Django 简介 | 菜鸟教程 2.使用pip安装Django 当我们更换镜像源进…

Windows更新NVIDIA显卡驱动

笔记本显卡联想拯救者Y70001050Ti 1、首先进入GeForce官网,选择顶部的驱动程序。 2、拉到下面手动搜素驱动程序,有以下6个筛选条件。 3、我的显卡是GTX 1050Ti,所以选择的配置情况如下。这里注意下产品系列选择的一定要是带(NoteB…

一款可以协助排查视频是否乱序的软件:BitRecoverFree JPEG Viewer

笔者在做某个嵌入式linux视频项目的过程中,遇到的需求如下:同事在解码进程中将h264解码为RGB数据,发送给Qt进程,我在Qt进程中通过RPC接收RGB图片数据(至于为啥不是接收压缩后的h264数据,这是历史遗留问题&a…

虾皮、Lazada怎么选爆款?测评有哪些方法?

对于一个店铺来说,想要让自己店铺获得更多的流量推广,那么打造出爆款是非常重要的,虾皮、Lazada作为跨境平台也是同样如此,下面就来介绍虾皮、Lazada怎么去选爆款? 1、跟卖 以Shopee、Lazada平台选品,直接“抄”同行…

JavaScript开发工具WebStorm入门教程:开始运行WebStorm(一)

WebStorm是一个JavaScript开发工具,用于JavaScript及其相关技术编码,包括TypeScript、React、Vue、Angular、Node.js、HTML和样式表。就像IntelliJ IDEA和其他JetBrains ide一样,WebStorm让您的开发体验更愉快,自动化日常工作&…

SpringBoot集成Spring Data JPA项目实操

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 前言 该说的在《SpringBoot集成Mybatis项目实…

HikariCP源码阅读笔记

加入HikariCP的maven依赖 <dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>4.0.3</version> </dependency> <dependency><groupId>mysql</groupId><artifactId&g…

[附源码]java毕业设计疫情背景下社区公共卫生服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

10月BIOTREE协助发表文章再创新高,最高影响因子31.373

10月&#xff0c;BIOTREE在代谢组学、蛋白质组学、多组学方向共收录24篇客户文章&#xff0c;总影响因子&#xff1a;183.749&#xff0c;最高影响因子&#xff1a;31.373&#xff0c;IF>5分有19篇&#xff0c;发表杂志有Cell Metabolism、Clinical Immunology、Cell and Bi…

web网页设计期末课程大作业 HTML+CSS+JavaScript重庆火锅(代码质量好)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

5、设计模式之工厂模式

工厂模式5.1 案例引入5.2简单工厂模式5.2.1 简单工厂模式结构5.2.2 实现5.2.3 优缺点分析5.3 工厂方法模式5.3.1 工厂方法模式结构5.3.2 新需求5.3.3 思路5.3.4 实现5.3.5 优缺点分析5.4 抽象工厂5.4.1 介绍5.4.2 结构5.4.3 实现5.4.4 使用场景5.5 工厂配置文件实现解耦相关文章…

【Vue】pc和移动端网页样式适配

在下面环节会讲解怎么做pc和移动端网页样式适配。 在当下有两种实现样式适配的&#xff1a;JS 适配方案和CSS 媒体查询适配。下面会具体讲解一下代码该怎么写。 &#x1f64f; 希望该文章能帮助到你。 1. JS 适配方案 比如在src/router/index.vue文件中有一个统一的Layout组件包…

《机器学习实战》9.树回归

目录 树回归 1 复杂数据的局部性建模 2 连续和离散型特征的树的构建 3 将CART算法用于回归 3.1 构建树 3.2 运行代码 4 树剪枝 4.1 预剪枝 4.2 后剪枝 5 模型树 6 示例&#xff1a;树回归与标准回归的比较 7 使用python的Tkinter库创建GUI 7.1 用Tkinter创建GUI …

UG旋钮盖模具设计与加工

文章目录三维造型设计创建草图旋转拉伸拉伸求差圆周阵列倒圆抽壳二板模模具设计分型面初始化项目定义模具坐标定义成形镶件定义一模四腔的布局创建型芯和型腔检测区域创建区域和分型线创建分型面创建型芯和型腔加载模架创建模架添加标准件添加定位圈添加浇口套添加旋钮盖顶杆修…