[Python-de] Problem mit SocketServer

Alexander Langer alexander.langer at address.invalid
Di Mai 7 13:27:00 CEST 2013


Am 06.05.2013 18:09, schrieb Eugen Ruppert:
> Grundsätzlich würde ich aber davon abraten, recv(BUFF_SIZE) aufzurufen,
> da man dann z.B zusätzlich prüfen muss, wie viele Daten ein recv()
> überhaupt liefert. Es klappt zwar sehr oft (besonders im lokalen
> Netzwerk;)  ), dass ein recv den ganzen Datenblock einließt, verlassen
> darf man sich darauf nicht - es kann genauso 1 Byte sein.

Ich habe gestern mal direkt mit python sockets gearbeitet und dieses 
Verhalten beobachtet. Obwohl ich die Puffergrößen exakt mit den 
Nachrichtenlängen abgestimmt habe, gab es vereinzelt Überläufe / 
Unterläufe, so dass in meinen Kommandovariablen auf einmal Nutzdaten 
standen.

Diese paketorientierte Denke muss man sich in diesem Kontext auf jeden 
Fall abgewöhnen :D

Jetzt habe ich vor eine Art String Matching einführen.
D.h. ich gehe den Puffer Zeichen für Zeichen durch.

Welches "Format" ist schnell zu matchen ? So etwas vielleicht: ?

.....###<CMD1>:8chars|<DATASIZE>:4chars|<DATA1>:DATASIZEchars>###.....

Grüße,

Alexander


Mehr Informationen über die Mailingliste python-de