QDataStream没有增加QByteArray

时间:2017-09-28 10:06:31

标签: c++ qt windows-10 qt5 qdatastream

当我重复地将原始网络字节写入QDataStream对象时,QDataStream永远不会增加底层QByteArray的写入位置。

以下是代码:

QByteArray recvBuf;
int bytePosition = 0;

void init( ){
    recvBuf = QByteArray( 240 * 10, Qt::Uninitiliazed );
}

void receiveAppend( ){    
    QByteArray buffer( 240, Qt::Uninitialized );
    QDataStream datastream( recvBuf, QIODevice::WriteOnly );
    datastream.setByteOrder( QDataStream::LittleEndian );

    if( udpSocket->readDataGram( buffer.data(), buffer.size(), &ip, &port ){
        datastream.device().seek( bytePosition );
        datastream.writeRawData( buffer.data(), buffer.size() );
        bytePosition += 240;
    }
}

为什么会这样?

该代码在Linux Mint 18 64Bit上运行良好。但它不适用于Windows 10 64Bit 我正在使用Qt Creator 4.3.1和Qt 5.9.1。

0 个答案:

没有答案