void EchoThread::recievmessages( const QString &strmessage, const QString &arg ){ QByteArray block2; QDataStream out(&block2, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_4); out << quint16(0); // для последующего подсчета размера блока в байтах, пока записываем 0 out << arg; out << strmessage; //подсчет колличества байтов в сформированном пакете и отсылка информации out.device()->seek(0); out << quint16(block2.size() - sizeof(quint16)); //подсчитаем реальный размер блока в байтах emit writeToSocket(block2);}
void RAM::updateTcpWidget(){ QString arg; QString strmessage; QDataStream in(&tcpSocket); in.setVersion(QDataStream::Qt_4_4); forever { if (nextBlockSize == 0) { if (tcpSocket.bytesAvailable() < sizeof(quint16)) break; in >> nextBlockSize; } if (nextBlockSize == 0xFFFF) { connectUp = false; closeConnection(); break; } if (tcpSocket.bytesAvailable() < nextBlockSize) break; in >> arg; in >> strmessage; //вывод информации в поле вывода if (arg == tr( "1" )){ //что то делаем по первому варианту } //вывод информации в статусбар if (arg == tr( "2" )){ //что то делаем по второму варианту } } nextBlockSize = 0; }}