Qt 通过UDP广播搜索设备(模拟设备回应并修改IP实现过程)

UDP广播搜索设备

用途

在不知晓设备IP的情况下,快速找到设备IP并进行修改!(常规操作)!

通过广播发送搜索指令

在这里插入图片描述

设备收到后进行响应

在这里插入图片描述
回复内容:包含设备的IP、MAC地址等信息(根据需要进行实现)

同一个端口绑定多个IP

在这里插入图片描述
同一个端口绑定多个IP

foreach (QHostAddress address, getIpAddrs()) {
        QUdpSocket *socket = new QUdpSocket(this);
        bool bindOK = socket->bind(address, LOCAL_PORT, QUdpSocket::ShareAddress);
        connect(socket,SIGNAL(readyRead()),this,SLOT(processPengingDatagram()));
        qDebug()<<QString("socket bind port:%1 to addr:%2 %3.").arg(LOCAL_PORT).arg(address.toString().toLocal8Bit().data()).arg(bindOK?"ok":"fail");
        udpSocketList->append(socket);
    }
//获取IP
QList<QHostAddress> getIpAddrs()
{
    QList<QHostAddress> listaddr;
    //使用allAddresses命令获得所有的ip地址
    QList<QHostAddress> list=QNetworkInterface::allAddresses();
    QString str = "";
    foreach (QHostAddress address,list)
    {
        if(address.protocol()==QAbstractSocket::IPv4Protocol && address != QHostAddress::LocalHost)
        {
            listaddr.append(address);
        }
    }
    return listaddr;
}

为什么有多个IP,呐,就这么多

在这里插入图片描述

原因:因为计算机可能存在多个网卡,如果你的设备连接的是其中一个,如果不全部绑定,那么设备就有可能收不到我们的搜索报文
PS:如果不全部绑定,在虚拟机中尝试的时候能收到,返回返回的数据Client收不到。

程序效果

设备端是通过模拟程序来实现的
在这里插入图片描述
左边的为Client,右边的为模拟的设备端

程序介绍

设备端

通过模拟设备来实现设备端的数据响应,设备端绑定固定端口,接收广播
收到广播后判定收到的是否为约定的内容,如果是则处理,否则不处理
响应时也是向对方的端口发送一条广播,广播内容包含自己的IP、MAC地址等信息
客户端收到后进行处理
DEMO下载

客户端

客户端通过主动发送广播数据,搜索局域网内的设备
搜索到后进行处理

代码就不一一在这里贴了,直接将整个工程都上传了,需要的下载参考!
源码下载

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车轮滚滚向西行

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值