Qt 使用UDP广播来寻找当前网段内在线设备

简介: 这里简单说明一下,UDP通信分为三种,分别为单播,组播和广播。这三种方式都需要在Qt中添加网络模块并包含头文件
QT       += network
#include <QUdpSocket>

单播就是发送消息到指定的IP+端口

组播就是发送消息的指定的IP组+端口

广播就是发送整个网络。

具体代码网上应该有很多了,这里就的部分代码分享,其他可以自行百度。

 

其实代码还是很简单的,第一步,建立UDPsocket

udpServer = new QUdpSocket(this);     //接收数据
    udpServer->bind(QUdpSocket::ShareAddress);   //第一个参数为端口号,第二个参数为表示允许其他地址链接广播
    connect(udpServer,&QUdpSocket::readyRead,this,&MainWindow::slot_Read_Udpsocket_Date);

剩下的就是发送广播数据

int xx = udpServer->writeDatagram((char*)searchDev,4,QHostAddress::Broadcast,1901);  

这样就可以在接收函数中接收数据了。

今天遇到的问题就是硬件设备无法检测是否收到数据,智能通过在PC端通过抓包软件来看是否将数据广播出去image.png

从这里看,我的数据是发送完毕了,但是没有收到数据的返回,排除了一下午是不是这两行代码写的有问题,一直得不到设备返回的数据。也不能确定设备是都收到数据。


经过排查,TM是文档中给的端口号有问题,厂家提供的软件的端口号和文档中提供的不是一个随后吧端口改成厂家提供软件中的端口解决问题。image.png

所以,哈哈哈,文档还是要及时更新好,不然就是误人子弟啊,害我白忙乎了好几天。

以上就是今天的内容了


image.pngimage.png

目录
相关文章
|
14天前
|
安全 Java Go
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
82 0
|
19小时前
|
网络协议 安全 程序员
网络原理-UDP/TCP详解
网络原理-UDP/TCP详解
网络原理-UDP/TCP详解
|
1天前
|
网络协议
TCP/UDP网络编程
TCP/UDP网络编程
8 2
|
5天前
|
网络协议 安全 Java
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
15 1
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
|
12天前
|
网络协议 网络性能优化
UDP与TCP:了解这两种网络协议的不同之处
UDP与TCP:了解这两种网络协议的不同之处
|
14天前
|
网络协议
TCP和UDP可以绑定同样的端口吗?
TCP和UDP可以绑定同样的端口吗?
|
14天前
|
网络协议 网络性能优化 Go
【JaveEE】UDP 与 TCP 原理(下)
【JaveEE】UDP 与 TCP 原理
27 1
|
14天前
|
XML JSON 网络协议
【JaveEE】UDP 与 TCP 原理(上)
【JaveEE】UDP 与 TCP 原理
18 3
|
14天前
|
网络协议 Unix 网络性能优化
网络编程 —— TCP 和 UDP 编程详解
网络编程 —— TCP 和 UDP 编程详解
网络编程 —— TCP 和 UDP 编程详解