【Qt笔记】Qt建立UDP通信
    		       		warning:
    		            这篇文章距离上次修改已过421天,其中的内容可能已经有所变动。
    		        
        		                
                
#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函数读取数据报内容。这里使用了一个循环来处理可能存在的多个数据报,并对每个数据报进行了处理。如果在指定时间内没有数据报到来,我们会打印一条超时信息并退出循环。
评论已关闭