Qt UDP 广播简单示例

前言

用 Qt 的 UDP 来实现一个广播示例,代码其实非常简单,需要用到 QUdpSocket 类,这里实现两个工程,服务端和客户端,由服务器端发送广播消息到每个客户端接收显示。

正文

先来看看两个示例的运行图片

左边是服务端,负责下发消息内容,有那是客户端,负责显示接收到的广播消息。
来看看代码:

服务端

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    m_pUdpServer = new QUdpSocket();
    this->setWindowTitle("Udp server");
}

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

void Widget::on_pushButton_clicked()
{
    QString content = ui->textEdit->toPlainText();
    if(!content.isEmpty()){
        m_pUdpServer->writeDatagram(content.toLocal8Bit(),QHostAddress::Broadcast,9999);
    }
}

客户端

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("Udp client");
    m_pUdpClient = new QUdpSocket;
    m_pUdpClient->bind(9999,QUdpSocket::ShareAddress);

    connect(m_pUdpClient,&QUdpSocket::readyRead,this,[=](){
        while (m_pUdpClient->hasPendingDatagrams()) {
            QByteArray datagram;
            datagram.resize(m_pUdpClient->pendingDatagramSize());
            m_pUdpClient->readDatagram(datagram.data(),datagram.size());
            ui->textEdit->insertPlainText(datagram);
        }
    });
}

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

为了测试方便,这里的端口号是随便定义的一个数。代码很简单,这里就不多赘述。
代码下载

猜你喜欢

转载自blog.csdn.net/luoyayun361/article/details/78703219