当我重复将原始网络字节写入 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 一起使用。