[Interest] QDataStream not increasing position of QByteArray

Henry Skoglund fromqt at tungware.se
Mon Oct 2 15:07:00 CEST 2017


On 2017-10-02 14:23, Stephan.Ebeling at hs-anhalt.de wrote:
> 
> Dear Qt-list-members,
> 
> 
> i got the following problem with Qt and i hope that you can help me:
> 
> 
> When I write raw network bytes to a QDataStream object repeatedly, the 
> QDataStream never increases the write position of the underlying QByteArray.
> 
> Here's the code:
> 
> |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; } } |
> 
> Why is this happening?
> 
> The code works fine on Linux Mint 18 64Bit. But it's not working on 
> Windows 10 64Bit. I'm using Qt Creator 4.3.1 with Qt 5.9.1.
> 
> 

Maybe a stupid question, but you're sure you're receiving the same 240 
network bytes in Win10 as you do in Mint? If you do a trace printout of 
the buffer.size() in receiveAppend(), is it the same in both systems?
Maybe Win10's firewall is messing the program...

Rgrds Henry




More information about the Interest mailing list