QT udp通信--Apple的学习笔记

一,前言

之前做的都是QT的TCP通信,从来没做过QT的udp通信,所以我从自己的小小代码库中找不到udp通信的最小代码,那么现在做一个吧。

二,代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    m_receiver=new QUdpSocket(this);
    //绑定发送端,ShareAddress允许多接收端绑定1234端口
    if(m_receiver->bind(QHostAddress("127.0.0.1"), 1234, QUdpSocket::ShareAddress))
    {
        qDebug("ok");
        //当接收端接收到数据时,就会发送readRead信号
        connect(m_receiver,SIGNAL(readyRead()),this,SLOT(processData()));
    }
    else
    {
        qDebug("nok");
    }


}

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

void Widget::processData()
{
    QString strData;
    qDebug("gohere");
    while(m_receiver->hasPendingDatagrams()){
        QByteArray dataGram;
        //读取的数据大小
        dataGram.resize(m_receiver->pendingDatagramSize());
        m_receiver->readDatagram(dataGram.data(),dataGram.size());
        ui->dataLabel->setText(dataGram);   //将接收到的数据显示到标签上
    }

}

三,效果

注意远程主机的端口要设置为和代码是一样的,比如1234


image.png

四,小结

我的QT小小代码库又多了一份积累,今天的练习主要是为了我之后的小项目做的基础准备工作。

你可能感兴趣的:(QT udp通信--Apple的学习笔记)