先导
最近有使用QT
的UDP
广播,所以记录这篇帖子记录一下
讲解
什么是UDP
广播,我就不搬百科的内容了,就按照我的一点理解来说吧
UDP
是一种网络进程间通信的技术,一般和TCP
一起出现,UDP
的通信优势是速度快、不需要确定对方IP
地址,但是缺点是连接不可靠。而UDP
广播是UDP
下的一种通讯手段,他作为广播发送端(使用writeDatagram()
方法)时可以在当前网络下的广播地址中进行发送广播信息,而任何接收端(使用readDatagram()
方法)都能接收到服务器当前发送的广播信息
代码实例
发送端
1 2 3 4 5 6 7 8 9
| 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!"; } }
|
接收端
1 2 3 4 5 6 7 8 9 10 11 12
| 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)); }); }
|
测试
带图形界面的测试
impressionyang