【Qt笔记】Qt建立UDP通信
#include <QCoreApplication>
#include <QUdpSocket>
#include <QHostAddress>
#include <QDebug>
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QUdpSocket udpSocket;
udpSocket.writeDatagram("Hello, UDP!", QHostAddress::LocalHost, 12345);
while (true) {
char buffer[1024];
QHostAddress sender;
quint16 senderPort;
// 等待数据报的到来
if (udpSocket.waitForReadyRead(3000)) {
// 读取数据报
while (udpSocket.hasPendingDatagrams()) {
qint64 size = udpSocket.pendingDatagramSize();
if (size > 1024) {
continue;
}
udpSocket.readDatagram(buffer, size, &sender, &senderPort);
qDebug() << "Received:" << buffer << "from" << sender << senderPort;
}
} else {
qDebug() << "Timeout waiting for UDP datagram.";
break;
}
}
return a.exec();
}
这段代码展示了如何使用Qt的QUdpSocket类来发送和接收UDP数据报。首先,我们创建了一个QUdpSocket对象并使用writeDatagram函数发送了一个数据报。然后,我们使用waitForReadyRead函数等待接收数据报,并使用readDatagram函数读取数据报内容。这里使用了一个循环来处理可能存在的多个数据报,并对每个数据报进行了处理。如果在指定时间内没有数据报到来,我们会打印一条超时信息并退出循环。
评论已关闭