Neel, я бы порекомендовал вам следующее: QDataStream имеет удобные перегруженные операторы >> и операторы <<. В этом случае я обычно определяю размер данных, например, первые 4 байта потока. А на другом конце я <em>ожидаю, что эти 4 байта будут прочитаны, чтобы определить весь размер данных.
Например, некоторый псевдокод (стиль C ++, но он просто дает представление о том, что вам нужно, а не на 100% отточенный и рабочий код):
QByteArray myData = getData();
QDataStream ds(&socket);
ds << myData.size();
// Note: here your data will be encoded and be '\0' terminated
ds << myData.constData();
// so you might want to consider this call
// although since Qt doesn't guarantee exactly myData.size bytes to be written
// its your responsibility to check whether everything is written
ds.writeRawData(myData.constData(), myData.size());
Теперь, если вы используете QByteArray или любой из типов Qt, которые можно отправлять через QDataStream, вы можете воспользоваться преимуществами того, что уже реализовано в Qt, и отправлять свои данные так же просто, как:
QByteArray myData = getData();
QDataStream ds(&socket);
ds << myData;
В этом случае просто проверьте здесь http://doc.qt.nokia.com/4.7/datastreamformat.html того, как Qt записывает QByteArray в QDataStream. Более того: если у вас есть QDataStream на втором конце, все, что вам нужно сделать, это просто прочитать ваши данные так же легко, как вы их написали.
Надеюсь, это поможет.