Frage zum Lesen von socket

05/10/2008 - 13:46 von Florian Lindner | Report spam
Hallo,

ich habe einen SocketServer und lese meine Daten von
self.rfile.readline() (in der handle() Funktion des
StreamRequestHandler.

Sobald rfile.readline() auf das Newline Zeichen trift hört es
allerdings auf zu lesen. Allerdings kann das Newline Zeichen durchaus
auch in meinen Paket vorkommen, ich habe dann also nur ein
unvollstàndiges Paket.

- Ich könnte nun readline() mehrmals (bis es nur "" zurückgibt)
aufrufen und die Strings verketten.

- Da mein Paket einen festes End Flag hat, ist mir die Idee gekommen,
ob man readline sagen kann: Nimm dieses Endflag (0xFD) anstatt des
Newlines. Dies erscheint mir momentan am elegantesten.

- Ich könnte anstatt rfile die Funktion recv benutzt. Die erwartet
jedoch eine Buffer Größe und ich weiß nicht, was ich sinnvolles
einsetzen kann.

Grüße & Danke,

Florian
 

Lesen sie die antworten

#1 Marc BlackJack Rintsch
05/10/2008 - 14:04 | Warnen spam
On Sun, 05 Oct 2008 04:46:39 -0700, Florian Lindner wrote:

ich habe einen SocketServer und lese meine Daten von
self.rfile.readline() (in der handle() Funktion des
StreamRequestHandler.

Sobald rfile.readline() auf das Newline Zeichen trift hört es
allerdings auf zu lesen. Allerdings kann das Newline Zeichen durchaus
auch in meinen Paket vorkommen, ich habe dann also nur ein
unvollstàndiges Paket.

- Ich könnte nun readline() mehrmals (bis es nur "" zurückgibt) aufrufen
und die Strings verketten.

- Da mein Paket einen festes End Flag hat, ist mir die Idee gekommen, ob
man readline sagen kann: Nimm dieses Endflag (0xFD) anstatt des
Newlines. Dies erscheint mir momentan am elegantesten.



Soweit ich weiss ist das nicht machbar. Das '' ist irgendwo in den
C-Quellen "hart verdrahtet".

- Ich könnte anstatt rfile die Funktion recv benutzt. Die erwartet
jedoch eine Buffer Größe und ich weiß nicht, was ich sinnvolles
einsetzen kann.



Ist im Grunde egal, Du musst das sowieso in einer Schleife tun und die
Ergebnisse verketten. Das etwas an einem Stück gesendet wurde, bedeutet
nicht, dass es nicht in hundert Einzelteilen ankommen kann.

Ciao,
Marc 'BlackJack' Rintsch

Ähnliche fragen