[gelöst] [QT4, MSVC] QAbstract bzw. QTcpSocket
Verfasst: 8. November 2005 14:01
Hallo zusammen. Ich bin mal wieder am verzweifeln.
Erst mal eine kleine Erklärung:
Ich hab ein tool das sich mit einem Server verbindet. Nach erfolgreicher Verbindung, schickt der Server einen dicken (~4500Byte) Batzen an Daten zu mir. Soweit so gut, den Socket mir readyRead() verbunden. Klappt auch.
Aber:
Mit bytesAvailable() werden mir die Bytes auch angezeigt, was aber dann im QByteArray nach m_pTCP->readAll() drin ist, ist ca. nur ein Achtel (!) der Datenmenge. Lustigerweise, zeigt mir der Studio Debugger auch an, das es 4500Byte sind. Aber da stehen echt nur ein paar Fragmente drin...
Hab schon versucht es über QDataStream zu machen, klappt nicht, ins Array wird nix geladen, hab versucht mittels der Beispiele draufzukommen, klappt nicht, weil die netterweise die Packte immer mit der Größe voran schicken/empfangen.
Noch lustiger ist, dass wenn ich mit m_pTCP->setReadBufferSize() den buffer sehr klein mache (~100Bytes), wird readyRead() nach jedem vollen buffer geworfen, und ich könnte mir 'theoretisch' dann ein Array mit den Daten zusammen schustern. Will aber hier niemand.
Code gibt's dazu keinen, ist echt nur der slot der nach readyRead() 'eigentlich' alle anliegenden Daten in ein QByteArray werfen soll. Soll.
Ich hab echt keinen Plan. Kann jemand evtl. mit einem Beispiel weiterhelfen, dass nicht gerade so nette, perfekte Packte wie die Qt-Bsp bastelt und empfängt?
Ich hoff das hat jemand verstanden...
Erst mal eine kleine Erklärung:
Ich hab ein tool das sich mit einem Server verbindet. Nach erfolgreicher Verbindung, schickt der Server einen dicken (~4500Byte) Batzen an Daten zu mir. Soweit so gut, den Socket mir readyRead() verbunden. Klappt auch.
Aber:
Mit bytesAvailable() werden mir die Bytes auch angezeigt, was aber dann im QByteArray nach m_pTCP->readAll() drin ist, ist ca. nur ein Achtel (!) der Datenmenge. Lustigerweise, zeigt mir der Studio Debugger auch an, das es 4500Byte sind. Aber da stehen echt nur ein paar Fragmente drin...
Hab schon versucht es über QDataStream zu machen, klappt nicht, ins Array wird nix geladen, hab versucht mittels der Beispiele draufzukommen, klappt nicht, weil die netterweise die Packte immer mit der Größe voran schicken/empfangen.
Noch lustiger ist, dass wenn ich mit m_pTCP->setReadBufferSize() den buffer sehr klein mache (~100Bytes), wird readyRead() nach jedem vollen buffer geworfen, und ich könnte mir 'theoretisch' dann ein Array mit den Daten zusammen schustern. Will aber hier niemand.
Code gibt's dazu keinen, ist echt nur der slot der nach readyRead() 'eigentlich' alle anliegenden Daten in ein QByteArray werfen soll. Soll.
Ich hab echt keinen Plan. Kann jemand evtl. mit einem Beispiel weiterhelfen, dass nicht gerade so nette, perfekte Packte wie die Qt-Bsp bastelt und empfängt?
Ich hoff das hat jemand verstanden...