在Qt中,可以使用QUdpSocket类来发送和接收UDP数据。
发送UDP数据:
QUdpSocket socket;
QHostAddress receiverAddress("127.0.0.1");
quint16 receiverPort = 12345;
QByteArray data = "https://www.yisu.com/ask/Hello, World!";
socket.writeDatagram(data, receiverAddress, receiverPort);
接收UDP数据:
QUdpSocket socket; quint16 port = 12345; if(!socket.bind(port)) { qDebug() << "Failed to bind to port"; return; } connect(&socket, &QUdpSocket::readyRead, [&](){ while(socket.hasPendingDatagrams()) { QByteArray datagram; datagram.resize(socket.pendingDatagramSize()); QHostAddress sender; quint16 senderPort; socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); qDebug() << "Received datagram from" << sender.toString() << ":" << senderPort; qDebug() << "Data:" << datagram.data(); } });
在上面的代码中,我们首先创建一个QUdpSocket对象来发送和接收UDP数据。在发送数据时,我们使用writeDatagram方法,传入要发送的数据、接收方地址和端口号。在接收数据时,我们首先绑定一个端口号,然后通过readyRead信号来处理接收到的数据。我们可以使用hasPendingDatagrams方法来检查是否有待处理的数据报,再使用readDatagram方法读取数据报的内容、发送方地址和端口号。