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端通过抓包软件来看是否将数据广播出去
从这里看,我的数据是发送完毕了,但是没有收到数据的返回,排除了一下午是不是这两行代码写的有问题,一直得不到设备返回的数据。也不能确定设备是都收到数据。
经过排查,TM是文档中给的端口号有问题,厂家提供的软件的端口号和文档中提供的不是一个随后吧端口改成厂家提供软件中的端口解决问题。
所以,哈哈哈,文档还是要及时更新好,不然就是误人子弟啊,害我白忙乎了好几天。
以上就是今天的内容了