Seite 1 von 1

Dynamische Länge eines UDP Datenpakte einlesen

Verfasst: Sonntag 27. Januar 2008, 18:28
von thonix
Hallo zusammen,

ich brauche einen Deamon der Daten von einem Client via UDP empfängt.

Das Paket enthält eine variierende Anzahl an Datensätzen die zu beginn des des Pakets bekannt gemacht werden. Ein Beispiel:
| Anzahl Der Datensätze [2 byte integer] (z.B. 2) | Datensatz 1 [4 byte integer] | Datensatz 2 [4 byte integer] |
Wenn ich nun mit socket.recv(2) 2 Byte auslese ist der Rest des Paketes weg ....

Das Problem ist das Datenpaket eine unbekannte/variable Länge hat. Somit kann ich nicht sagen bufferlen ist = 1024, denn so würde ich (wie auch bei den 2 Byte) die restlichen Daten nach 1024 Byte verlieren.

Hat jemand eine einfache Ahnung wie eine solche Anforderung sich in Python abbilden lässt ?

Vielen Dank

Thonix

Verfasst: Sonntag 27. Januar 2008, 20:23
von veers
Du machst einfach jeweils recv(maximalgrösse) ;)

Verfasst: Sonntag 27. Januar 2008, 20:52
von thonix
Was mich wundert ist das ein nicht abgerufener buffer einfach gelöscht wird ...

Die bufferlen recht Groß zu machen habe ich mir auch schon überlegt - und wäre wohl der Notnagel. Aberin der Theorie könnte das Datenpaket Unendlich groß sein ...

Vielleicht gibt es da was eleganteres.

thonix

Verfasst: Sonntag 27. Januar 2008, 21:07
von veers
thonix hat geschrieben:Die bufferlen recht Groß zu machen habe ich mir auch schon überlegt - und wäre wohl der Notnagel. Aberin der Theorie könnte das Datenpaket Unendlich groß sein ...
In der Praxis wird jedoch UDP/IP verwendet was das ganze auf 65507 Bytes limitiert. So habe ich das zumindest verstanden.