Qt 利用UDP进行通信
admin
2024-02-12 12:51:28
0

一、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     //获取对方的端口号和ip4     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; //对方的ip5     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模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

相关内容

热门资讯

腾讯马化腾:微信不搞AI全家桶... IT之家 1 月 26 日消息,据《科创板日报》报道,今日腾讯公司召开年度员工大会,腾讯公司董事会主...
布米普特拉北京投资基金管理有限... 在近期的达沃斯世界经济论坛上,英伟达首席执行官黄仁勋就人工智能产业的发展现状与未来走向发表了观点。针...
原创 赵... 经历了婚姻的波动,赵丽颖与冯绍峰的人生轨迹悄然发生了变化,尤其是在对孩子的抚养上,责任感愈加凸显。尽...
人工智能需求拉动 半导体产业链... A股业绩预告加速披露。与人工智能高度相关的半导体产业链公司2025年业绩表现整体不俗。不少公司在业绩...
1179亿港元市值!东大37岁... 文 | 创客公社施润 37岁东大校友,干出AI企业最快IPO,公司市值高达1179.27亿港元! 近...
开年即冲刺!珠海高新45个项目... 1月26日上午,珠海高新区举行2026年一季度重点项目签约仪式,英飞源、鹏城新能、元泰丰、巴山泓等4...
2025年银行理财市场存续规模... 日前,银行业理财登记托管中心发布《中国银行业理财市场年度报告(2025年)》。截至2025年末,银行...
全球“中等强国”联合“抗霸”:... 加拿大总理卡尼在达沃斯发表了一篇震撼全球的演说,他呼吁全球“中等强国”面对现实,联合起来“抗霸”。这...
原创 期... 众所周知,很多公司都在通过期权来绑定人才。 比如雷军做小米手机的时候就想找一批志同道合、跟公司同进退...
肯德基回应涨价:调整部分外送产... “肯德基涨价”的消息引发关注。1月26日起,肯德基对部分外送产品价格做出小幅调整,平均调整金额为0....
上期所批复同意5家银行为从事境... 据上海期货交易所1月26日消息,上海期货交易所于2026年1月26日批复同意中国工商银行股份有限公司...
万亿市值油气巨头,股价历史新高 26日,油气板块盘中走强,中国海油涨超6%,盘中股价一度达到33.49元/股,创历史新高,最新总市值...
央行:下调0.25个百分点 今天(1月15日)下午,国务院新闻办公室举行新闻发布会,介绍货币金融政策支持实体经济高质量发展成效。...
周鸿祎剧透360将发布“短剧智... 在近日举行的2026崇礼论坛上,360集团创始人周鸿祎发表名为《从大模型到百亿智能体时代——AI进化...
香港加速构建国际黄金交易枢纽:... 香港加速构建国际黄金交易枢纽:三年内仓储容量目标超2000吨,首支本地黄金基金即将上市 2026年...
金价突破5100美元关口!有人... 1月26日,黄金价格再度刷新历史新高。美国东部时间1月25日傍晚,纽约商品交易所2月黄金期货价格在电...
乳业唯一!国家级乳品精深加工实... 近日,农业农村部批复公布新一批企业重点实验室建设名单,由蒙牛集团牵头申报的“农业农村部乳品精深加工重...
5年上市未果的吉香居易主,这次... 2026年1月20日,重庆市市场监督管理局公示的经营者集中简易案件显示,悄然揭开了中国调味品行业新年...
Transformer作者创办... 当一家公司愿意投资自己曾经的员工创办的初创企业时,这通常说明两件事:一是前员工确实做出了值得关注的东...
新基金发行继续回暖 2026年... 2026年开年以来,在A股结构性行情的持续驱动下,已有超过200只基金年内业绩回报超过20%。基金业...