QtCreator 网络编程——Udp模型(QUdpSocket)

32 篇文章 0 订阅
2 篇文章 0 订阅

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();
    }
}


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值