• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Qt UDP 广播展示

武飞扬头像
Qt程序员
帮助1

前言

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

正文

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

学新通

左边是服务端,负责下发消息内容,右那是客户端,负责显示接收到的广播消息。

来看看代码:

服务端

  1.  
    Widget::Widget(QWidget *parent) :
  2.  
    QWidget(parent),
  3.  
    ui(new Ui::Widget)
  4.  
    {
  5.  
    ui->setupUi(this);
  6.  
    m_pUdpServer = new QUdpSocket();
  7.  
    this->setWindowTitle("Udp server");
  8.  
    }
  9.  
     
  10.  
    Widget::~Widget()
  11.  
    {
  12.  
    delete ui;
  13.  
    }
  14.  
     
  15.  
    void Widget::on_pushButton_clicked()
  16.  
    {
  17.  
    QString content = ui->textEdit->toPlainText();
  18.  
    if(!content.isEmpty()){
  19.  
    m_pUdpServer->writeDatagram(content.toLocal8Bit(),QHostAddress::Broadcast,9999);
  20.  
    }
  21.  
    }
学新通

客户端

  1.  
    Widget::Widget(QWidget *parent) :
  2.  
    QWidget(parent),
  3.  
    ui(new Ui::Widget)
  4.  
    {
  5.  
    ui->setupUi(this);
  6.  
    this->setWindowTitle("Udp client");
  7.  
    m_pUdpClient = new QUdpSocket;
  8.  
    m_pUdpClient->bind(9999,QUdpSocket::ShareAddress);
  9.  
     
  10.  
    connect(m_pUdpClient,&QUdpSocket::readyRead,this,[=](){
  11.  
    while (m_pUdpClient->hasPendingDatagrams()) {
  12.  
    QByteArray datagram;
  13.  
    datagram.resize(m_pUdpClient->pendingDatagramSize());
  14.  
    m_pUdpClient->readDatagram(datagram.data(),datagram.size());
  15.  
    ui->textEdit->insertPlainText(datagram);
  16.  
    }
  17.  
    });
  18.  
    }
  19.  
     
  20.  
    Widget::~Widget()
  21.  
    {
  22.  
    delete ui;
  23.  
    }
学新通

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfcgbc
系列文章
更多 icon
同类精品
更多 icon
继续加载