QTcpSocket在读取批量数据时读取一些额外的字节?

时间:2012-10-27 06:01:19

标签: c++ linux windows qt

我目前正在研究从服务器(LINUX服务器)接收数据包的Qt GUI应用程序。

在正常情况下,它工作正常但是当服务器在套接字上写入大量数据包时,客户端套接字进入循环来处理该数据但最后剩下8个额外字节不属于我的应用程序和应用程序永远不会从循环中出来,这使我的应用程序无响应。 我收到的所有数据都没有任何损失。

我的代码会更清楚:

connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(receiveData()));

void MyClass::receiveData()
{
    char recvbuf[MAXPACKET]; // MAXPACKET = 4096
    char* packet = 0;
    int bytesAvailable = 0;
    int bufSize = MAXPACKET;

    while((bytesAvailable > 0) || tcpSocket ->bytesAvailable())
    {
       if (bytesAvailable == 0 && tcpSocket ->bytesAvailable())
       {
          qint64 requestBytes = bufSize - bytesAvailable;
          bytes = tcpSocket->read(recvbuf + bytesAvailable, requestBytes);
          bytesAvailable += bytes;
       }

       //createPAcket and process Packets method works here
       if (packet)
         processPacket(packet);
    }
}

0 个答案:

没有答案