QT软件网络库使用UDP组播(基于C++语言)

您所在的位置:网站首页 udp组播软件 QT软件网络库使用UDP组播(基于C++语言)

QT软件网络库使用UDP组播(基于C++语言)

2022-07-09 12:32| 来源: 网络整理| 查看: 265

使用QT发送UDP包方法

最近对QT感兴趣,虽然日常用C语言比较多,但是由于C与C++的相似性,使用QT并不复杂

QT如何引入网络?

学习QT自然要学习QT提供的强大库函数。在QT中对于网络应用的使用已经为我们封装成可直接调用的类 接下来进入主题:

如何调用QT的网络库? 首先在我们新建完工程后,在工程中我们可以看到一个.pro文件! 这个文件是用来告诉qmake创建makefile文件所需要的细节。打开.pro文件后,在文件中添加QT += network。这样我们的QT工程就可以使用QT提供的强大网络库了。QT的网络库在那个头文件? 要使用QT的网络库,必不可少我们需要引用相关的.h文件。如此我们需要在对网络相关操作的文件中引用:include 。该头文件包含了对UDP协议的所有操作函数。UDP发送数据 在我们的.h文件的类中添加相关UDP变量 例如: QUdpSocket* udpSocket;

添加完毕后,在后续的编程中使用。 新建后,我们要使用它 在初始化函数中添加

udpSocket = new QUdpSocket();

初始化完成后,我们就可以调用相关函数发送数据。

QString SignalRbIp = "192.168.3.7"; Qstring PimRbIP = "224.0.0.1" Qstring Port = "1024"; //单播发送数据 udpSocket->writeDatagram("this is SigRb Or PIMRb Udp Package",QHostAddress(SignalRbIp),Port.toInt(); //组播发送数据 udpSocket->writeDatagram("this is SigRb Or PIMRb Udp Package",QHostAddress(PimRbIP),Port.toInt()); //广播发送数据 udpSocket->writeDatagram("this is SigRb Or PIMRb Udp Package",QHostAddress::Broadcast,Port.toInt()); 接收数据

接收数据前需要做最后一步准备:绑定IP和相关端口,并连接槽函数

//单播绑定 udpSocket->bind(QHostAddress(SignalRbIp,1024); connect(udpSocket,SIGNAL(readyRead()),this,SLOT(UDPReciveData())); //广播绑定 udpSocket->bind(QHostAddress("255.255.255.255",1024); connect(udpSocket,SIGNAL(readyRead()),this,SLOT(UDPReciveData())); //组播绑定 udpSocket->bind(QHostAddress::AnyIpv4,1024,QUdpSocket::ShareAddress); connect(udpSocket,SIGNAL(readyRead()),this,SLOT(UDPReciveData())); //将组播地址加入组播 udpSocket->joinMulticastGroup(QHostAddress(PimRbIP)); /****************************** * 函数名:UDPReciveData * 作者:MelyLenient * 函数功能:接收UDP数据 * 输入参数:无 * 返回参数:无 ******************************/ void MainWindow::UDPReciveData() { QByteArray udpRecv; //接收存储 while(udpSocket->hasPendingDatagrams()) { //重定义缓存大小为本次接收数据长度 udpRecv.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(udpRecv.data(),udpRecv.size(),&dstAddress,&dstPort); QString showData = udpRecv; qdebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3