我是靠谱客的博主 美满保温杯,最近开发中收集的这篇文章主要介绍QtCreator 网络编程——Udp模型(QUdpSocket),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 编写发送端sender

添加一个以QDialog为基类的Sender类项目,项目名udpSender,在项目文件udpSender.pro文件中添加QT += network

在sender.h中添加前置声明


class QUdpSocket;

添加私有对象


QUdpSocket *sender;	

加入一个pushButton,一个lineEdit,设置私有槽函数


void Sender::on_pushButton_clicked()
{
	QByteArray datagram = ui->lineEdit->text().toLatin1();
	sender->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);//把数据写入报文并发送
}

在构造函数中new 一个sender对象


sender = new QUdpSocket(this);

2. Receiver

添加一个以QDialog为基类的Receiver类项目,项目名udpReceiver,在项目文件udpReceiverr.pro文件中添加QT += network

在sender.h中添加前置声明


class QUdpSocket;

添加私有对象


QUdpSocket *receiver;	
加入一个label用于显示接收到的数据
添加一个私有槽,用于接收数据
private slots:

void processPendingDatagram();//用于等待接收数据报
在构造函数中

receiver = new QUdpSocket(this);//构建接收者

receiver->bind(45454,QUdpSocket::ShareAddress);//绑定套接字

connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));//每当有数据报发送过来时,QUdpSocket都会发射readyRead信号,这样就可以在自定义的槽中读取数据
读取数据报
void Receiver::processPendingDatagram()
{

//拥有等待的数据报

while (receiver->hasPendingDatagrams()) {//hasPendingDatagrams用于检测是否有数据报传来

//让datagram的大小为等待处理的数据报的大小,

QByteArray datagram;

datagram.resize(receiver->pendingDatagramSize());


//接收数据报,将其存放到datagram中

receiver->readDatagram(datagram.data(),datagram.size());//读取datagram.size()长度的数据进入datagram中

ui->label->setText(datagram);

ui->label->adjustSize();

}
}




最后

以上就是美满保温杯为你收集整理的QtCreator 网络编程——Udp模型(QUdpSocket)的全部内容,希望文章能够帮你解决QtCreator 网络编程——Udp模型(QUdpSocket)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部