Ah, yes... I had not posted that part. I was calling a QTcpSocket->waitForReadyRead() before entering the readRawData() functions. That's why I get at least partial data.

I also just recently added more waitForReadyRead() calls inside the readRawData() function, and I now do in fact get the entire image.

As far as 'operator<<' and 'operator>>', are you suggesting that these are not suitable for use over sockets (meaning they'd work fine for QFile or similar)? Also, should I stop utilizing QDataStream::writeBytes() and QDataStream::readBytes() over TCP/IP for the same reasons? Am I just getting "lucky" that my XML content is small enough to be sent over in the first packet received?