小编Аск*_*Чик的帖子

QUdpsocket丢失数据报,同时处理前一个

我通过udp分割帧(50Kb)并将frameId添加到数据中,将未打包的图像(bmp)数据从一个应用程序(联合)发送到另一个(QT)。另一方面,我试图集成框架(使用frameId),并且在我收集了一个图像的所有框架之后,将其作为图像进行处理。如果我只是捕获帧而没有处理它们,则我以正确的顺序获取数据

void Server::readPendingDatagrams()
{
    if (udpSocket->hasPendingDatagrams()) {
        QByteArray datagram;
        datagram.resize(udpSocket->pendingDatagramSize());
        QHostAddress sender;
        quint16 senderPort;

        udpSocket->readDatagram(datagram.data(), datagram.size(),
                                &sender, &senderPort);
        qDebug()<<datagram[0]; //frameId
        //processTheDatagram(datagram);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在控制台中看到“ 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5”,但是如果我取消注释processTheDatagram(datagram);我得到“ 1 3 4 1 2 4 2 4 5 2 3 5”,它在处理先前的数据报时会丢失数据。问题出在哪里??在udp缓冲区?

c++ sockets networking qt udp

1
推荐指数
1
解决办法
1167
查看次数

标签 统计

c++ ×1

networking ×1

qt ×1

sockets ×1

udp ×1