这篇博文的例子是说明如何在局域网上搭建广播包接收端。

这里使用了Qt Network API,搭建本地广播包接收端。

结构如下:

代码如下:

receiver.h

#ifndef RECEIVER_H
#define RECEIVER_H#include <QWidget>QT_BEGIN_NAMESPACE
class QLabel;
class QUdpSocket;
QT_END_NAMESPACEclass Receiver : public QWidget
{Q_OBJECTpublic:explicit Receiver(QWidget *parent = nullptr);private slots:void processPendingDatagrams();private:QLabel *statusLabel = nullptr;QUdpSocket *udpSocket = nullptr;
};#endif

main.cpp

#include <QApplication>#include "receiver.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);Receiver receiver;receiver.show();return app.exec();
}

receiver.cpp

#include <QtWidgets>
#include <QtNetwork>#include "receiver.h"Receiver::Receiver(QWidget *parent): QWidget(parent)
{statusLabel = new QLabel(tr("Listening for broadcasted messages"));statusLabel->setWordWrap(true);auto quitButton = new QPushButton(tr("&Quit"));//! [0]udpSocket = new QUdpSocket(this);udpSocket->bind(45454, QUdpSocket::ShareAddress);
//! [0]//! [1]connect(udpSocket, SIGNAL(readyRead()),this, SLOT(processPendingDatagrams()));
//! [1]connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));auto buttonLayout = new QHBoxLayout;buttonLayout->addStretch(1);buttonLayout->addWidget(quitButton);buttonLayout->addStretch(1);auto mainLayout = new QVBoxLayout;mainLayout->addWidget(statusLabel);mainLayout->addLayout(buttonLayout);setLayout(mainLayout);setWindowTitle(tr("Broadcast Receiver"));
}void Receiver::processPendingDatagrams()
{QByteArray datagram;
//! [2]while (udpSocket->hasPendingDatagrams()) {datagram.resize(int(udpSocket->pendingDatagramSize()));udpSocket->readDatagram(datagram.data(), datagram.size());statusLabel->setText(tr("Received datagram: \"%1\"").arg(datagram.constData()));}
//! [2]
}

解释关键代码:

解释:广播报使用的是UDP,所以用的是QUdpSocket,并且绑定了端口45454。

解释:关联了信号与槽当网卡缓存中有数据时,调用对应的槽函数进行读取。

解释:当缓存区有数据时:hasPendingDatagrams(),然后就使用QByteArray获取读到的数据,最后设置到label上。

Qt文档阅读笔记-Broadcast Receiver Example解析相关推荐

  1. Qt文档阅读笔记-Broadcast Sender Example解析

    此例子展示了使用Qt Network API发送广播包 程序结构如下: 代码如下: sender.h #ifndef SENDER_H #define SENDER_H#include <QWi ...

  2. Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析

    目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...

  3. Qt文档阅读笔记-Multicast Receiver Example与Multicast Sender Example解析

    目录 Multicast Receiver Example Multicast Sender Example Multicast Receiver Example 多播接收实例! 要注意几点: 1.这 ...

  4. Qt文档阅读笔记-Object Model初步解析

    对象模型 标准C++对象模型提供了对象范式在运行时的高效性.但是他的一些静态性质在某些领域是不灵活的.在GUI程序中不仅要运行时的高效还需要较高的灵活性.Qt对象模型不急结合了C++运行时的高效并且还 ...

  5. Qt文档阅读笔记-Custom Items Example解析

    这个实例展示了在图中添加自定义item.并且演示了如何去移动. Obj网格文件添加到资源文件中. 注意:一般是在meshes上增加纹理,这里可以直接用QImage添加一个单独的颜色. QImage c ...

  6. Qt文档阅读笔记-GridLayout QML Type解析与实例

    目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...

  7. Qt文档阅读笔记-Image QML官方解析与实例

    目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...

  8. Qt文档阅读笔记-Widgets Tutorial官方解析及实例

    目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...

  9. Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例

    目录 官方解析 博主例子 官方解析 easingCurve:QEasingCurve 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...

最新文章

  1. java工程化_(二)Java工程化--Maven实践(示例代码)
  2. Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...
  3. Python--yield关键字的使用
  4. 27_多线程_第27天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义...
  5. 从大学生到职场人,一段深刻的思维认知升级补丁
  6. jquery的鼠标移入移出事件hover、mouseenter、mouseleave、mouseover、mouseout
  7. day19【前台】支付
  8. 记2021上半年软考中级-数据库系统工程师考试
  9. java ee课程设计_javaee课程设计
  10. 多元函数的切向量和法向量
  11. QT调用WIN32 API代码,遇到无法解析
  12. 网易首支AI歌曲《醒来》发布:声音太逼真 能瞒过人类
  13. 解决Win7系统安装时缺少驱动
  14. 史上最全的全国特产一览表,到哪就买当地最正宗的特产!!!
  15. SQLI DUMB SERIES-3
  16. Python工程师需要学习的知识总结,送给需要的人
  17. 中 华 百 家 姓 一 览
  18. 巴菲特的在University of Florida商学院的一次演讲
  19. 裴蜀定理(Noi Color)应用
  20. Tita 如何助力组织目标层层落地

热门文章

  1. IOS开发之Bug--遇到一个类型不确定的bug
  2. opengl启动过程
  3. 从BI到OLAP,数据仓库最终到底能干什么?
  4. 2008-10-13 XEIM 2.0 beta 准时发布
  5. 从单纯聊天到在线生活
  6. 一个简单的学生成绩管理软件(ODBC开发)
  7. 我真out了,高端人士都这样玩儿?
  8. 使用Vue2.x高效还原美团外卖项目
  9. 抱歉,程序员的工作不能用时间来衡量
  10. 前端们等了8年!HTML5标准终于完工了