Qt网络编程 (udp广播和接收例)

这篇具有很好参考价值的文章主要介绍了Qt网络编程 (udp广播和接收例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

使用两个项目

  • 1 sender 用来广播"hello world";
  • 2 receiver 用来接收广播信息

sender

  • 1 创建Qdialog类
  • 2 在sender.pro 中添加 QT +=network 一行代码
  • 3 在sender.h 中声明类
    • class QUdpSocket;
    • 在声明一个私有对象
    • QUdpSocket *sender;
  • 4 在ui界面拖入一个按钮 用来触发广播信息
    其槽函数如下
void Sender::on_pushButton_clicked()
{
    QByteArray datagram = "hello world";
    sender->writeDatagram(datagram.data(),datagram.size(),
                          QHostAddress::Broadcast,45454);
}
/*
首先,定义了一个QByteArray类型的变量datagram,其中存储了字符串"hello world"的字节流。

然后,调用了sender对象的writeDatagram函数,该函数用于发送UDP数据报。具体参数含义如下:

 datagram.data():获取datagram的数据指针,用于发送数据。
 datagram.size():获取datagram的数据大小,用于指定发送数据的长度。
 QHostAddress::Broadcast:指定目标主机地址为广播地址,表示将数据发送给局域网内的所有主机。
 45454:指定目标主机端口号,表示将数据发送到该端口号对应的进程。
 
总体来说,这段代码的作用是向局域网内的所有主机发送一个UDP数据报,数据内容为"hello world"。
*/

在sender.cpp 构造函数中添加

 sender= new QUdpSocket(this);

receiver

  • 1 创建Qdialog类
  • 2 在receiver.pro 中添加 QT +=network 一行代码
  • 3 在receiver.h 中声明类
    • class QUdpSocket;
    • 在声明一个私有对象
      • QUdpSocket *sender;
    • 添加一个私有槽函数
      • private slots:
      • void processPendingDatagram();
  • 4 在ui界面拖入一个label 用来显示接收广播信息
    其槽函数如下
void Receiver::processPendingDatagram(){
    while(receiver->hasPendingDatagrams()){
        QByteArray datagram;
        datagram.resize(receiver->pendingDatagramSize());
        receiver->readDatagram(datagram.data(),datagram.size());
        ui->label->setText(datagram);
    }
}
  • 5绑定
 receiver->bind(45454,QUdpSocket::ShareAddress);
 connect(receiver,&QUdpSocket::readyRead,
            this,&Receiver::processPendingDatagram);
/*

这段代码是一个初始化和连接信号和槽的操作。

首先,调用了receiver对象的bind函数,该函数用于将接收端口绑定到45454端口上,并且设置了QUdpSocket::ShareAddress选项,表示该端口可以被多个进程共享。

然后,使用connect函数将receiver对象的readyRead信号与当前对象(Receiver类的实例)的processPendingDatagram槽函数连接起来。readyRead信号表示接收到新的数据报,而processPendingDatagram槽函数用于处理接收到的数据报。

总体来说,这段代码的作用是初始化一个UDP接收器,并将其绑定到指定的端口号上。同时,将接收到新数据报的信号与处理数据报的槽函数连接起来,以便在接收到新数据报时能够及时处理。
*/
//sender.cpp 发送端
#include "sender.h"
#include "ui_sender.h"
#include <QtNetwork>
Sender::Sender(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Sender)
{
    ui->setupUi(this);
    sender= new QUdpSocket(this);
}

Sender::~Sender()
{
    delete ui;
}

void Sender::on_pushButton_clicked()
{
    QByteArray datagram = "hello world";
    sender->writeDatagram(datagram.data(),datagram.size(),
                          QHostAddress::Broadcast,45454);
}

演示

qt接收udp数据,QT,c++,qt
qt接收udp数据,QT,c++,qt文章来源地址https://www.toymoban.com/news/detail-668112.html

到了这里,关于Qt网络编程 (udp广播和接收例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT网络编程TCP/UDP开发流程 制作网络调试助手

    1、QT的网络编程: TCP和UDP TCP编程需要用到俩个类: QTcpServer 和 QTcpSocket QTcpSocket类 提供了一个TCP套接字 QTcpSocket是QAbstractSocket的一个子类,它允许您建立TCP连接和传输数据流 注意:TCP套接字不能在QIODevice::Unbuffered模式下打开。 QTcpServer类 提供一个基于tcp的服务器 2. 这个类可以接

    2023年04月08日
    浏览(38)
  • 网络编程-UDP协议(发送数据和接收数据)

    需要了解TCP协议的,可以看往期文章 https://blog.csdn.net/weixin_43860634/article/details/133274701 通过此图,可以了解UDP所在哪一层级中 发送数据 接收数据 运行效果 1、 UDP是面向无连接通信协议 (通俗一点讲,就是不管是否已连接成功,直接发送数据),该特性正好与TCP协议相反,

    2024年02月07日
    浏览(32)
  • 网络编程(三)—— UDP(单播、广播、组播)

    UDP协议的特点: 无连接 、不保证传输可靠(可能重复到达、失序、丢失、无字节流控制(数据传输快的会淹没慢的)) UDP传输 UDP 服务端(接收端)的搭建流程 UDP客户端(发送端)的搭建流程 通信流程 sendto 和 recvfrom 这两个函数一般在使用UDP协议时使用 sendto recvfrom 单播就

    2024年02月04日
    浏览(33)
  • Linux网络编程系列之UDP广播

            1、 Linux网络编程系列之网络编程基础         2、 Linux网络编程系列之TCP协议编程         3、 Linux网络编程系列之UDP协议编程         4、 Linux网络编程系列之UDP广播         5、 Linux网络编程系列之UDP组播         6、 Linux网络编程系列之服务器编程——阻塞IO模型

    2024年02月04日
    浏览(31)
  • 【嵌入式-网络编程】vmware中使用UDP广播失败问题

    问题描述: 自己在vmware中搭建了2台虚拟机,虚拟机A向虚拟机A和虚拟机B发送广播信息,接收端在虚拟机A和虚拟机B,这个时候,由于没配置 sin.sin_addr.s_addr = htonl(INADDR_ANY); ,而是配置的 inet_pton(AF_INET, SERV_IP, sin.sin_addr.s_addr); ,导致虚拟机A的广播信号发出去了,但是虚拟机B和

    2024年01月23日
    浏览(43)
  • Qt网络编程post请求,数据格式为json或x-www-form-urlencoded

    目录 Qt网络编程post请求,数据格式为json或x-www-form-urlencoded 一、.H文件 1、.h头文件 2、.h主代码 二、.CPP文件 1、主代码  三、响应信息 返回结果(Josn数据格式输出) 四、Post数据格式参数及数据类型定义 1、Post:application/x-www-form-urlencoded数据类型格式 2、Post:application/json数据

    2024年02月07日
    浏览(37)
  • 【嵌入式Qt开发入门】Qt如何网络编程——获取本机的网络信息

            Qt 网络模块为我们提供了编写TCP/IP客户端和服务器的类。它提供了较低级别的类,例如代表低级网络概念的 QTcpSocket,QTcpServer 和 QUdpSocket,以及诸如 QNetworkRequest, QNetworkReply 和 QNetworkAccessManager 之类的高级类来执行使用通用协议的网络操作。它 还提供了诸如QNet

    2024年02月16日
    浏览(45)
  • 4、QT中的网络编程

    子网网络:局域网,只能进行内网的通信 公网网络:因特网,服务器等可以进行远程的通信 4层模型:应用层、传输层、网络层、物理层 应用层:用户自定义的网络数据传输协议:ssh、tftp、tfp、http 等 传输层:tcp/udp出传输协议 网络层:IPV4/IPV6,3G,4G,5G等网络协议 物理层

    2024年02月09日
    浏览(25)
  • QT网络编程之TCP

    TCP 编程需要用到俩个类: QTcpServer 和 QTcpSocket。

    2024年02月13日
    浏览(26)
  • ℰ悟透Qt—Http网络编程

    网络访问 API 建立在一个 QNetworkAccessManager 对象之上,该对象保存了发送请求所需的公共配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号和可用于监视网络操作进度的回复信号。整个 Qt 应用程序只需要一个 QNetworkAccessManager 实例。由于 QNetworkAccessManager 基于

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包