readDatagram
是 Qt 中 QUdpSocket
类的一个成员函数,用于从已连接的 UDP 套接字中读取数据报。它的语法如下:
QByteArray QUdpSocket::readDatagram(qint64 maxSize, QHostAddress *sender = nullptr, quint16 *senderPort = nullptr)
参数解释:
maxSize
:最大读取的数据报大小。sender
(可选):指向用于存储发送方 IP 地址的QHostAddress
对象指针。senderPort
(可选):指向用于存储发送方端口号的quint16
指针。
函数返回值是从套接字中读取到的数据报内容,以 QByteArray
形式返回。
使用示例:
QUdpSocket socket;
socket.bind(QHostAddress::Any, 12345); // 绑定本地地址和端口
while (true) {
QByteArray datagram;
QHostAddress sender;
quint16 senderPort;
if (socket.hasPendingDatagrams()) {
datagram.resize(socket.pendingDatagramSize());
socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
// 处理接收到的数据报
qDebug() << "Received datagram from" << sender.toString() << ":" << senderPort;
qDebug() << "Data:" << datagram;
}
}
在上面的示例中,我们首先创建了一个 QUdpSocket
对象并绑定了本地地址和端口。然后进入一个循环,在循环中使用 hasPendingDatagrams
来检查是否有待处理的数据报,如果有则调用 readDatagram
来读取数据报。最后,我们可以对接收到的数据报进行处理,例如输出发送方的 IP 地址、端口和数据内容。
请注意,在使用 readDatagram
函数时,需要确保套接字已经绑定到本地地址和端口,并且在适当的时候调用该函数来读取数据报。
内容由零声教学AI助手提供,问题来源于学员提问