C++ (Qt) QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out << QString("sos"); qFatal("block size = %d, content = %s", block.size(), block.toHex().data());
C++ (Qt)out << str;out << str;out << str;
C++ (Qt) static qint16 blockSize=0; QString a; emit TextOutput("Socket:ready read "+QString::number(sock->bytesAvailable())+"bytes"); QDataStream in(sock); QByteArray block; QDataStream tmp(&block,QIODevice::ReadOnly); int ba; in.setVersion(QDataStream::Qt_4_0); while(sock->bytesAvailable()>0) // есть ещё байты что прочитать можно { //фактически фортун клиент, только я тут читаю в строку определённо число байт if (blockSize == 0) { if (sock->bytesAvailable() < (int)sizeof(quint16)) return; in >> blockSize;//длинна полученной строки в байтах } ba=sock->bytesAvailable(); if (ba < blockSize) return; block=sock->read(blockSize);//читаем длинну строки в байтах tmp.setVersion(QDataStream::Qt_4_0); tmp>>a;//и запихиваем в QString emit TextOutput("Socket:recv "+QString::number(blockSize)+" bytes="+a); ba=sock->bytesAvailable(); //sock->write(a.toLocal8Bit()); blockSize=0; } }
C++ (Qt)QString str = tr( "sos" );QByteArray block;QDataStream out(&block, QIODevice::WriteOnly);out << size; // Размер блока как в примереout << QString( "Str1" );out << QString( "Str2" );out << QString( "Str3" );// Отправка block
C++ (Qt)// Чтение размера блока// Ожидание и чтение всего блокаQString str1, str2, str3;in >> str1 >> str2 >> str3;
C++ (Qt)QString str = tr( "sos" );QByteArray block;QDataStream out(&block, QIODevice::WriteOnly);out << size; // Размер блока как в примереout << QString( "Str1" );out << QString( "Str2" );out << QString( "Str3" );