Qt QUdpSocket UDP 發送廣播信息失敗 解決方案

{

receiver = new QUdpSocket(this);    
connect(receiver, &QUdpSocket::readyRead, this, &netSettingWin::processPendingDatagramSL);



QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces();
    foreach(QNetworkInterface interface, interfaceList)
    {
        //        qDebug() << interface.humanReadableName(); //打印網卡名稱
        QList<QNetworkAddressEntry> entryList = interface.addressEntries();
        foreach(QNetworkAddressEntry entry, entryList)
        {
            QString str = entry.broadcast().toString();
            if (str != "")
            {
                QByteArray mas;
                mas.append(char(0xff));
                mas.append(char(0x01));
                mas.append(char(0x01));
                mas.append(char(0x02));

                qDebug() << receiver->writeDatagram(mas, mas.size(), QHostAddress(str), 1901);
                receiver->flush();
            }
        }
    }

}

void netSettingWin::processPendingDatagramSL()
{
    QByteArray mas;
    while (receiver->hasPendingDatagrams())
    {
        QByteArray datagram;

        // 讓datagram的大小爲等待處理的數據報的大小,這樣才能接收到完整的數據
        datagram.resize(receiver->pendingDatagramSize());

        // 接收數據報,將其存放到datagram中
        receiver->readDatagram(datagram.data(), datagram.size());
        mas = mas+datagram;
    }
    qDebug() << mas.size();
    qDebug() << mas;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章