[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