Qt UDP广播

时间:2022-07-24
本文章向大家介绍Qt UDP广播,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

先导

最近有使用QTUDP广播,所以记录这篇帖子记录一下

讲解

什么是UDP广播,我就不搬百科的内容了,就按照我的一点理解来说吧

UDP是一种网络进程间通信的技术,一般和TCP一起出现,UDP的通信优势是速度快、不需要确定对方IP地址,但是缺点是连接不可靠。而UDP广播是UDP下的一种通讯手段,他作为广播发送端(使用writeDatagram()方法)时可以在当前网络下的广播地址中进行发送广播信息,而任何接收端(使用readDatagram()方法)都能接收到服务器当前发送的广播信息

代码实例

  • 只写出关键的代码,完整带图形界面的测试项目已经上传至我的github

发送端

UdpBrocastServer::UdpBrocastServer(QString msg) {
  brocast_server = new QUdpSocket();
  if (!msg.isEmpty()) {
    brocast_server->writeDatagram(msg.toLocal8Bit(), QHostAddress::Broadcast,
                                  10086);
  } else {
    qDebug() << "brocast server: msg is empty!";
  }
}

接收端

UdpBrocastClient::UdpBrocastClient() {
  brocast_client = new QUdpSocket();
  brocast_client->bind(10086, QUdpSocket::ShareAddress);

  QObject::connect(brocast_client, &QUdpSocket::readyRead, this, [=]() {
    //
    QByteArray datagram;
    datagram.resize(brocast_client->pendingDatagramSize());
    brocast_client->readDatagram(datagram.data(), datagram.size());
    emit getBrocastMsg(QString(datagram));
  });
}

测试

带图形界面的测试