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

QT网络编程: 实现UDP通讯设置

目录

一.widget.ui界面设计

二.创建UDP通信

1.pro文件添加network模块。

2.添加对应头文件

3.定义槽函数,即与 UI 中的按钮点击事件相关联的函数

4.定义类的私有成员

5.关闭按钮

6.信息处理

7.绑定端口

8.发送信息

9.效果图

三.代码演示

1.widget.h

2.widget.cpp


一.widget.ui界面设计

拖拽左侧Label控件到页面中,分别显示Label:对方IP;Label:对方端口。

拖拽左侧Push Button控件到页面中,分别为: 发送,关闭,两个按钮。在右侧将其objectName 分别设置为 ;"sendButton" ;  "closeButton" 。

拖拽左侧QLineEdit控件到页面中,在右侧将其objectName 设置为"lineIp"和"lienProt",目的是输入对方IP和对方端口号。

拖拽左侧QTextEdit控件到页面中,在右侧将其objectName 设置为"textEditRead"和"textEditWrite",目的是读取对方发来的信息和输入自己想要发送的信息。
 

二.创建UDP通信

1.pro文件添加network模块。


2.添加对应头文件


#include <QUdpSocket>: C++ 中用于引入 Qt 网络库中的 QUdpSocket 类的预处理指令。QUdpSocket 是 Qt 用于实现用户数据报协议 (UDP) 的类。UDP 是一种无连接的、不可靠的传输层协议,通常用于实时数据传输,如游戏、流媒体和网络广播等场景,因为它提供了低延迟和低开销的通信。

#include <QHostAddress>:QHostAddress 类是 Qt Network 模块中的一个类,用于表示 IP 地址和主机名。它提供了一种方便的方式来处理 IP 地址,支持 IPv4 和 IPv6 地址。

3.定义槽函数,即与 UI 中的按钮点击事件相关联的函数

  • on_closeButton_clicked():当关闭按钮被点击时调用。
  • on_sendButton_clicked():当发送按钮被点击时调用。

4.定义类的私有成员

  • QUdpSocket *socket;:一个 QUdpSocket 对象,用于网络通信。

5.关闭按钮

6.信息处理

7.绑定端口

8.发送信息

9.效果图

三.代码演示

1.widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QUdpSocket>
#include <QWidget>
#include <QHostAddress>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void dealMsg();private slots:void on_closeButton_clicked();void on_sendButton_clicked();private:Ui::Widget *ui;QUdpSocket* udpSocket;
};#endif // WIDGET_H

2.widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);udpSocket = new QUdpSocket(this);udpSocket->bind(QHostAddress::Any,9000);connect(udpSocket,&QUdpSocket::readyRead,this,&Widget::dealMsg);setWindowTitle("端口: 9000");}Widget::~Widget()
{delete ui;
}void Widget::on_closeButton_clicked()
{close();
}void Widget::on_sendButton_clicked()
{if(nullptr == ui->lineIp || nullptr == ui->lienProt){return;}QString ip = ui->lineIp->text();quint16 port = ui->lienProt->text().toInt();//读取编辑区内容if(nullptr == ui->textEditWrite){return;}QString str=ui->textEditWrite->toPlainText();//写入套接字udpSocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);}void Widget::dealMsg()
{//定义了一个字符数组buf,大小为1024个字符。数组初始化为0,这通常用于确保数组在使用前被正确初始化char buf[1024] = {0};//QHostAddress 是Qt库中用于表示IP地址的类。quint16 是一个16位无符号整数,通常用于表示端口号。QHostAddress ip;quint16 port;//readDatagram 是一个从UDP套接字读取数据的方法。它接受四个参数://第一个参数buf:用于存储读取到的数据的缓冲区。//第二个参数sizeof(buf):指定缓冲区的大小,这里是1024个字符。//第三个参数&ip:用于接收读取到的IP地址,通过引用传递以修改变量的值。//第四个参数&port:用于接收读取到的端口号,同样通过引用传递。//接受信息qint64 len = udpSocket->readDatagram(buf,sizeof(buf),&ip,&port);if(len>0){//显示QString str = QString("[%1:%2]%3").arg(ip.toString()).arg(port).arg(buf);ui->textEditRead->append(str);}}

相关文章:

QT网络编程: 实现UDP通讯设置

目录 一.widget.ui界面设计 二.创建UDP通信 1.pro文件添加network模块。 2.添加对应头文件 3.定义槽函数&#xff0c;即与 UI 中的按钮点击事件相关联的函数 4.定义类的私有成员 5.关闭按钮 6.信息处理 7.绑定端口 8.发送信息 9.效果图 三.代码演示 1.widget.h 2.…...

机器学习第十一章--特征选择与稀疏学习

一、子集搜索与评价 我们将属性称为 “特征”(feature&#xff09;&#xff0c;对当前学习任务有用的属性称为 “相关特征”(relevant feature&#xff09;、没什么用的属性称为 “无关特征”(irrelevant feature)&#xff0e;从给定的特征集合中选择出相关特征子集的过程&…...

dm 到 dm 的 HS 同步部署

一、数据库部署 完成两节点数据库部署并初始化&#xff0c;配置参数如下&#xff1a; 节点 192.168.2.132 192.168.2.133 数据库版本 DM8 DM8 实例名 DM1 DM2 端口号 5236 5236 数据文件路径 /home/dmdba/dmdata /home/dmdba/dmdata 二、 dmhs 部署 1. 部署…...

ShardingSphere、雪花算法、分布式id生成器CosID概述

ShardingSphere 用处&#xff1a;sharding是分片的意思&#xff0c;sphere是球&#xff08;生态的意思&#xff09;。用来做分库分表的生态的。一个订单表太大&#xff0c;查询会很慢&#xff0c;要分表&#xff0c;分为3个表&#xff0c;这样查询会快一点&#xff0c;所以有了…...

hive学习(四)

一、分区表的数据导入 1.静态分区&#xff08;需要手动指定分区字段的值&#xff09; 直接将文件数据导入到分区表 语法&#xff1a;load data [local] inpath filepath into table tablename partition(分区字段1分区值1, 分区字段2分区值2...); load data [local] inpat…...

UniAD_面向规划的自动驾驶

Planning-oriented Autonomous Driving 面向规划的自动驾驶 https://github.com/OpenDriveLab/UniAD Abstract Modern autonomous driving system is characterized as modular tasks in sequential order, i.e., perception, prediction, and planning. In order to perfor…...

《现代情报》

《现代情报》简介 《现代情报》&#xff08;原名《情报知识》&#xff09;杂志是由吉林省科学技术厅主管&#xff0c;吉林省科学技术信息研究所、中国科学技术情报学会联合主办的信息资源管理领域综合性学术期刊。该刊于1980年创刊&#xff0c;每年12期。重点报道服务于国家战略…...

2024年最新上榜的文件加密管理软件

文件加密市场风起云涌&#xff0c;后辈迭出&#xff0c;2024年安企神软件在文件加密管理软件市场中备受瞩目&#xff0c;凭借其强大的功能和全面的保护策略&#xff0c;成功上榜并受到广泛认可。以下是对它的详细介绍&#xff1a; 一、产品概述 安企神软件不仅是一款电脑监控…...

Matplotlib库学习之scatter(模块)

Matplotlib库学习之scatter(模块) 一、简介 Matplotlib 是 Python 中一个强大的绘图库&#xff0c;其中 matplotlib.pyplot.scatter 用于创建散点图。散点图在数据可视化中广泛用于展示两个变量之间的关系。 二、语法和参数 语法 matplotlib.pyplot.scatter(x, y, sNone, c…...

脑网络相似性:方法与应用

摘要 图论方法已被证明是理解、表征和量化复杂大脑网络的有效工具。然而&#xff0c;定量比较两个图形的方法却较少受到关注。在一些网络神经科学应用中&#xff0c;比较大脑网络确实是必不可少的。在这里&#xff0c;本研究讨论了近年来用于比较大脑网络的技术现状、挑战以及…...

【JavaEE】深入MyBatis:动态SQL操作与实战项目实现指南

目录 MyBatis的进阶操作动态SQL<if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 练习表白墙数据准备引⼊MyBatis 和 MySQL驱动依赖配置MySQL账号密码编写后端代码测试 图书管理系统数据库表设计引⼊MyBatis 和MySQL 驱…...

Linux 实操-权限管理:深入了解rwx的作用

&#x1f600;前言 本篇博文是关于Linux文件权限管理的基本知识和实际操作&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是…...

Linux 系统编程 --- day3

目录 1. fileno 2.fdopen 3. 目录操作 3.1 opendir 3.2 readdir 3.3 closedir 3.4 实现 ls 命令的功能 4. chdir &#xff08;相当于cd命令&#xff09; 5. getcwd &#xff08;相当于pwd命令&#xff09; 6. mkdir 7. rmdir &#xff08;相当于rm命令&a…...

centos从home分区分配空间到根分区

在安装centos系统时如果采用默认自动分区&#xff0c;则会默认只给根分区分配50G空间&#xff0c;其余多余的会被分配到home分区&#xff0c;而作为家用服务器或仅个人使用的话&#xff0c;为了方便往往根分区会不够用而home分区几乎没使用。 先看下现在的磁盘结构和容量(xfs文…...

设计模式实战:即时通讯应用的设计与实现

系统功能需求 用户管理:支持用户注册、登录、注销、个人信息更新等功能。消息传递:支持即时消息发送、接收、存储和显示,支持文本、图片、语音等多种消息类型。在线状态管理:实时跟踪和显示用户的在线状态。消息通知:在消息到达时发送推送通知给用户。聊天记录管理:支持聊…...

白骑士的C#教学实战项目篇 4.3 Web开发

系列目录 上一篇&#xff1a;白骑士的C#教学实战项目篇 4.2 图形用户界面&#xff08;GUI&#xff09;应用 在这一部分&#xff0c;我们将从桌面应用程序扩展到 Web 开发。Web 开发是现代软件开发的重要领域&#xff0c;涵盖了从前端用户界面到后端服务器逻辑的完整堆栈。在这…...

【数据分析】(交互) 延迟互信息(熵、概率密度、高斯核、带宽估计)

文章目录 一、互信息基础二、延迟互信息2.1 交互延迟互信息三、时间序列互信息中的概率计算(高斯核密度估计)四、python 示例补充 1:熵熵的定义熵的性质熵的单位和对数底数熵的最大值高熵、低熵的分辨补充 2:概率密度 和 高斯核概率密度高斯核拓展3 :核密度函数带宽估计在…...

html转vue项目

HTML是一种用于构建网页的标记语言&#xff0c;而Vue是一种用于构建用户界面的JavaScript框架。在HTML中使用Vue可以提供更加灵活和动态的用户界面功能。本文将介绍如何将HTML代码转换为Vue&#xff0c;并提供具体的代码示例。 首先&#xff0c;我们需要在项目中引入Vue框架。…...

.NET系列 定时器

net一共&#xff14;种定时器 System.Windows.Forms.Timer 类型 》》WinForm专用System.Windows.Threading.DispatcherTime类型》》WPF专用System.Threading.Timer类型》》》它使用 ThreadPool 线程来执行定时操作System.Timers.Timer类型 》》这种很老了。 它使用基于底层计时…...

【Golang】火焰图空白部分是什么?

起因 被同事灵魂拷问&#xff1a;图中这块空白是什么东西&#xff1f; 豆包回答说是数据采样不完整&#xff0c;特定函数或代码段未被调用之类的原因&#xff0c;感觉都不太合理。 之前看过一篇文章说&#xff1a;Heap Profiling的采样是无时无刻不在发生的&#xff0c;执行…...

Web框架 --- 解析Web请求 [FromBody] [FromQuery] [FromRoute] [FromHeader]

Web框架 --- 解析Web请求 [FromBody] [FromQuery] [FromRoute] [FromHeader] [FromBody][FromQuery][FromRoute] or [FromUri][FromHeader] [FromBody] FromBody 属性在使用 application/json 内容类型并在正文中传递 JSON 时使用通常情况下&#xff0c;FromBody 在一个操作中只…...

Messari 摘要报告:Covalent Network(CXT)2024 Q2 品牌重塑、AI模块化数据、亚太地区扩展、代币回购计划和网络增长

摘要 Covalent Network&#xff08;CXT&#xff09;在将质押从 Moonbeam 迁移到以太坊后&#xff0c;质押的 CQT 百分比恢复到了 20% 以上。 Covalent Network&#xff08;CXT&#xff09;在第二季度新增了五个网络运营商&#xff0c;使 BSP 集增长了 36%&#xff0c;提升了协…...

Open3D 计算点云的面状指数

目录 一、概述 1.1原理 1.2实现步骤 步骤 1&#xff1a;确定邻域点 步骤 2&#xff1a;计算协方差矩阵 步骤 3&#xff1a;特征值分解 步骤 4&#xff1a;计算面状指数 步骤 5&#xff1a;可视化与应用 1.3应用领域 二、代码实现 2.1关键函数 2.2完整代码 三、实现…...

python下麦克风设备选择和录音

import pyaudio import threading import wave import numpy as np def audio_f2i(data, width16):"""将浮点数音频数据转换为整数音频数据。"""data np.array(data)return np.int16(data * (2 ** (width - 1)))def audio_i2f(data, width16)…...

云和集群有什么区别?

我们常说的集群是针对于某项单独的功能或者说是某几个功能的集合体。 举个例子&#xff0c;比方有100台机器组成一个集群&#xff0c;这个集群里面50台机器装了hadoop&#xff0c;10台机器装了spark&#xff0c;剩下40台机器再装一个查询引擎presto。诸如此类&#xff0c;把多…...

无人机视角下的EasyCVR视频汇聚管理:构建全方位、智能化的AI视频监控网络

随着5G、AI、物联网&#xff08;IoT&#xff09;等技术的快速发展&#xff0c;万物互联的时代已经到来&#xff0c;视频技术作为信息传输和交互的重要手段&#xff0c;在多个领域展现出了巨大的应用潜力和价值。其中&#xff0c;EasyCVR视频汇聚平台与无人机结合的AI应用更是为…...

数字影像技术是如何改变我们看待世界的方式呢?

在当今的科技时代&#xff0c;数字影像技术正以惊人的速度改变着我们的生活和视觉体验。那么&#xff0c;什么是数字影像技术呢&#xff1f; 数字影像技术是指通过数字化手段对图像和视频进行获取、处理、存储、传输和展示的一系列技术。 它利用各种数字设备&#xff0c;如数…...

Chainlit实现启动页面选择不同的LLM启动器等设置界面

基本概念&#xff1a;启动选择器&#xff08;Starters&#xff09; 启动选择器&#xff08;Starters&#xff09; 是一种帮助用户开始与您的助手互动的建议。您可以为助手定义最多4个启动建议&#xff0c;并且可以为每个启动建议指定一个图标。 示例代码 (starters.py) impo…...

SQL - 增、改、删

插入 (insert into) 插入单行 insert into 表名 values ( 对应列的值&#xff0c;用,号间隔) //一般主键值用default&#xff0c;不可填null的不要填null insert into 表名 (需要提供值的列名) values (与之对应的提供的值) //其他的值只需mysql默认提供 insert into 表名 子查…...

怎么屏蔽电脑监控软件?企业管理者的智慧选择——精准定位,合理屏蔽,让监控软件成为助力而非障碍!

电脑监控软件在企业管理中扮演着日益重要的角色&#xff0c;它们能够提升工作效率、保障信息安全、预防内部风险。然而&#xff0c;过度或不当使用监控软件也可能引发员工隐私担忧&#xff0c;影响工作积极性和团队氛围。因此&#xff0c;作为企业管理者&#xff0c;如何精准定…...