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?