Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QByteArray и QDataStream

Автор: 512es 17.11.2008, 12:08

QByteArray packetData, packetData2;
QDataStream data(&packetData, QIODevice::WriteOnly);
packetData2.append("test");
data << (quint16) 22;
qDebug() << packetData.toHex() << packetData2.toHex();
data << packetData2;
qDebug() << packetData.toHex() << packetData2.toHex();




Output:

"0016" "74657374"

ок

"0016[b]00000004[/b]74657374" "74657374"

почему??

всмысле вот так:
"00160000000474657374" "74657374"

Автор: 512es 17.11.2008, 13:01

я кажется понял..
00000004 это длинна строки "test".. 4 байта..

а можно как то отключить автоматическое добавление quitn32 перед каждой строкой?

Автор: ViGOur 17.11.2008, 14:03

Цитата(512es @ 17.11.2008, 13:01) *
а можно как то отключить автоматическое добавление quitn32 перед каждой строкой?
QTextStream?

Автор: sploid 18.11.2008, 10:17

если ты удалишь первые 4 байта из строки, которая пишется в стрим, то не сможешь определить ее длину при чтении из стрима.
Если ты сделаешь просто packetData += packetData2, то размер строки не будет дописан.

Автор: 512es 20.11.2008, 18:26

оо.. их можно склаадывать =))))
спасибо!))

я просто не хочу хранить размерности строк в самом стриме. пусть они будут отдельно.. ограничиваться протоколом.. хоть и сложнее но на мой взгляд безопаснее.. да и байтоф меньше передавать по сети)

хотя над этим ещё стоит подумать..

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)