for(;stope;){ С->K - готов работать? if (K != "неет, ненадо больше") { K= "неет, ненадо больше"; С->К - получай кучу данных. K->работать отсюда и до обеда. K-> закончил работу K="Хочу ЕЩЕЕ!!!"; } }
void MyThread::recievmessages( const QString &strmessage, const QString &arg ){ QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_4); out << (quint64)0; // конец блока out << arg; //куда отправляем сообщение out << strmessage; //строка сообщения out.device()->seek(0); //подсчет колличества байтов в сформированном пакете и отсылка информации quint64 byte = quint64(block.size() - sizeof(quint64)); //подсчитаем реальный размер блока в байтах out << byte; m_client->write(block);}
void ClientRam::updateTcpWidget(){ QString arg; QString strmessage; if (!tcpSocket.isValid()){ return; } quint64 bytesA = tcpSocket.bytesAvailable(); QDataStream in(&tcpSocket); in.setVersion(QDataStream::Qt_4_4); forever { if (nextBlockSize == 0) { if (bytesA < sizeof(quint64)) return; in >> nextBlockSize; } if (bytesA < nextBlockSize) return; in >> arg; in >> strmessage; } nextBlockSize = 0; //готовы получить новую порцию данных break; }}