Qt通过UDP发送广播

 

 

// x.h
QUdpSocket* udp = nullptr;      // UDP对象

void createUdpAndSendData();    // 创建UDP对象和发送广播数据
void dropUdp();                 // 释放UDP对象
void readData();                // 用来接收其他设备发送的数据
void createUdpAndSendData()
{
    // 创建UDP对象
    if(udp == nullptr)
    {
        udp = new QUdpSocket(this);
        
        // 第一种方式,绑定当前默认网卡来发送广播
        // udp->bind(52110, QUdpSocket::ShareAddress);         
        
        // 第二种方式,绑定指定网卡
        QHostAddress ip1("10.10.13.132");
        udp->bind(ip1, 52110, QUdpSocket::ShareAddress);
        connect(udp, &QUdpSocket::readyRead, this, &MyWifiSelect::readSocketData);                             
    }
    
    // 发送广播
    QByteArray data = "Hello,I'm on line!";
    udp->writeDatagram(data.data(), data.size(), QHostAddress::Broadcast, 52110);
}

void dropUdp()
{
    if (udp)
    {
        delete udp;
        udp = nullptr;
    }
}

void readData()
{
    while (udp->hasPendingDatagrams())
    {
        QNetworkDatagram data = udp->receiveDatagram();
        QString s = data.data();
    }
}

 

posted @ 2023-11-02 09:58  十一的杂文录  阅读(193)  评论(0编辑  收藏  举报