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;
}


 

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

卑微的小李

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值