QT 广播

博客描述了服务器拖出显示框,客户端拖出输入框的情况。客户端发送消息后,两个服务器都能收到该消息,体现了客户端与服务器之间的消息交互。

服务器拖了一个显示框,客户端拖了一个输入框。

客户端:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QUdpSocket>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("Udp cli");
}

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


int32_t MainWindow::send()
{

    auto uSocket = new QUdpSocket;
    QString sendText=ui->textEdit->toPlainText();
    auto ret = uSocket->writeDatagram(sendText.toLatin1(),QHostAddress::Broadcast,8888);
    qDebug()<<"ret = "<<ret;
    return 0;
}
void MainWindow::on_pushButton_clicked()
{
    send();
    ui->textEdit->setPlainText("");
}

服务器1:

#include "cli.h"
#include "ui_cli.h"
#include<QUdpSocket>
#include<QDebug>
cli::cli(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::cli)
{
    ui->setupUi(this);

    this->setWindowTitle("Udp server1");
    auto m_pUdpClient = new QUdpSocket;
    m_pUdpClient->bind(8888,QUdpSocket::ShareAddress);

    connect(m_pUdpClient,&QUdpSocket::readyRead,this,[=](){
        while (m_pUdpClient->hasPendingDatagrams()) {
            QByteArray datagram;

            datagram.resize(static_cast<int>(m_pUdpClient->pendingDatagramSize()));
            m_pUdpClient->readDatagram(datagram.data(),datagram.size());
            datagram.append('\n');
            qDebug()<<datagram;
            ui->textBrowser->insertPlainText(datagram);

        }
    });

}

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

服务器2:

#include "cli.h"
#include "ui_cli.h"
#include<QUdpSocket>
cli::cli(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::cli)
{
    ui->setupUi(this);

    this->setWindowTitle("Udp server2");
    auto m_pUdpClient = new QUdpSocket;
    m_pUdpClient->bind(QHostAddress("192.168.42.130"),8888,QUdpSocket::ShareAddress);

    connect(m_pUdpClient,&QUdpSocket::readyRead,this,[=](){
        while (m_pUdpClient->hasPendingDatagrams()) {
            QByteArray datagram;
            datagram.resize(static_cast<int>(m_pUdpClient->pendingDatagramSize()));
            m_pUdpClient->readDatagram(datagram.data(),datagram.size());
            datagram.append('\n');
            ui->textBrowser->insertPlainText(datagram);
        }
    });

}

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

结果如下:

客户端发消息,两个服务器均能收到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值