C++ (Qt)SIGNAL(readyRead())
C++ (Qt)void TCPClientQt::slotReadyRead(){ .... isEnd=false; isCmd=false; while(true) { currArr=read(now_BytesAvailable); totalBytesRecived=totalBytesRecived+now_BytesAvailable; if(now_BytesAvailable < sizeCmd && !currArr.contains(m_AnswerStop.toAscii())){ .//.. isCmd=true; break; }else{ //.... } arrReadBlock.append(currArr); //... if(currArr.contains(m_AnswerStop.toAscii())){ //.. break; waitForReadyRead(900);// } // if(isEnd) { m_StrInfo=QTime::currentTime().toString("hh:mm:ss.zzz") +" R bytes: " +QString::number(totalBytesRecived); emit sig_newInfo(); return;}
C++ (Qt) if(now_BytesAvailable < sizeof(quint16)){ m_StrInfo=QTime::currentTime().toString("hh:mm:ss.zzz")+" 0 bytes"; emit sig_newInfo(); break;
C++ (Qt)TCPClientQt::TCPClientQt(QObject *parent): QTcpSocket(parent)
C++ (Qt) connect(this, SIGNAL(connected()), SLOT(slotConnected()),Qt::AutoConnection); connect(this, SIGNAL(disconnected()), SLOT(slotDisconnected()),Qt::AutoConnection); connect(this, SIGNAL(readyRead()), SLOT(slotReadyRead()),Qt::AutoConnection); connect(this, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(slotError(QAbstractSocket::SocketError)),Qt::AutoConnection); connect(this, SIGNAL(stateChanged(QAbstractSocket::SocketState)),this, SLOT(slotStateChanged(QAbstractSocket::SocketState)),Qt::AutoConnection);
C++ (Qt) connect(this, SIGNAL(connected()), SLOT(slotConnected()),Qt::AutoConnection); connect(this, SIGNAL(disconnected()), SLOT(slotDisconnected()),Qt::AutoConnection); connect(this, SIGNAL(readyRead()), SLOT(slotReadyRead()),Qt::AutoConnection);
C++ (Qt) connect(this, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(slotError(QAbstractSocket::SocketError)),Qt::AutoConnection); connect(this, SIGNAL(stateChanged(QAbstractSocket::SocketState)),this, SLOT(slotStateChanged(QAbstractSocket::SocketState)),Qt::AutoConnection);
C++ (Qt)connect(m_pTcpSocket, SIGNAL(readyRead()), SLOT(slotReadyRead()));
C++ (Qt)m_pTcpSocket->waitForReadyRead(550);//время ожидания очередного пакета в мс
C++ (Qt)class TCPClient : ...{ ...private: QByteArray m_buffer;}; // Слот обработки сигнала readyRead()void TCPClient::onReadData(){ m_buffer += readAll(); // Мы все вычитываем в буфер m_buffer // Здесь мы может проверить находится ли в буфере полный пакет данных для обработки, если да - обрабатываем его и выкусываем из буфера // Если в буфере осталась только часть пакета, то просто выходим и ждем следующую порцию данных}