QUdpSocket
数据报的官方QT文档中有一个example:
void Server::initSocket()
{
udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress::LocalHost, 7755);
connect(udpSocket, SIGNAL(readyRead()),
this, SLOT(readPendingDatagrams()));
}
void Server::readPendingDatagrams()
{
while (udpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;
udpSocket->readDatagram(datagram.data(), datagram.size(),
&sender, &senderPort);
processTheDatagram(datagram);
}
}
当readyRead()
信号发出时,我正试图了解究竟发生了什么。在while
循环中(在Server::readPendingDatagrams()
槽中)我们读取了可用的数据报,但是如果新数据报附加到套接字会发生什么,而我们仍然读取以前的数据报批处理? readyRead()
信号会再次发出?但是,在这种情况下,while
循环将如何读取数据 - 从上一个附加数据报或其他方式?