qt lesen vom socket



  • Kurze Frage:

    wieso empfange ich keine daten wenn ich von einem socket lese?
    Die Socket-Klasse ist mit dem SIGNAL(readyRead()) verbunden und dem SLOT(readPackage()) aus meiner eigenen Klasse.

    Wenn ich mit

    this->readAll(); lesen will, ist die Packetgröße 0.

    Im Internet und in der Docu habe ich mich schon erkundigt aber wieso so umständlich?

    QDataStream in(tcpSocket);
         in.setVersion(QDataStream::Qt_4_0);
    
         if (blockSize == 0) {
             if (tcpSocket->bytesAvailable() < (int)sizeof(quint16))
                 return;
    
             in >> blockSize;
         }
    
         if (tcpSocket->bytesAvailable() < blockSize)
             return;
    

    Ich dachte dafür wäre das Signal "readyRead()" da. Wenn Daten vor der Tür stehen hole ich sie mir mit einer Funktion wie readAll() ab.

    Könnte jemand da klarheit schaffen?



  • aha

    das problem habe ich nun gelöst. nur weiß ich nicht wieso es jetzt geht.

    Ich habe meine Client-Klasse von QTcpSocket erben lassen und mittels

    this->readAll() versucht das Packet auszulesen.

    Nun habe ich aber die klasse ein wenig geändert indem ich der Klasse ein QTcpSocket* objekt gegeben habe.

    nun funktioniert es:

    this->m_socket->readAll()

    darf man nicht von QTcpSocket ableiten oder wieso ging es vorhin nicht?


Anmelden zum Antworten