Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : QSocket Frage



bancbanus
10-02-2006, 16:07
Ich frage von einem Server Daten ab und hatte dabei das Problem, dass ich bei grosser Datenmenge nicht alle Daten kriege.

Ich habe dieses Problem insoweit in den Griff bekommen, indem ich "waitForMore" verwende:

while (my_socket->canReadLine()) {
temp = my_socket->readLine();
my_socket->waitForMore(3000);
}

Nachteil von dem ganzen ist, dass das auch bei kleiner Datenmenge lange dauert.

Grundsätzlich wird jede Datenmenge vom Server mit einer Zeile mit Punkt (\n.\n) terminiert.

Meine Frage: Ist es mit QSocket möglich, dass so lange gelesen wird, bis die Zeile mit dem Punkt kommt?

Danke!
Daniel

anda_skoa
11-02-2006, 16:49
QSocket ist non-blocking, eine Eventloop gesteuerte Klasse.
waitForMore macht da keinen Sinn, man bekommt ein Signal readyRead() wenn neue Daten da sind.

Wenn die Daten immer abgeschhlossene Zeilen sind, kann man in dem damit verbundenen Slot natürlich weiterhin canReadLine und readLine benutzen, sonst am besten einen QBuffer in den man die eingehenden Daten reinschreibt und am Ende daraus wieder liest

Ciao,
_