Frage

Ich baue Peer -to -Peer -Anwendung in Python. Es wird über UDP arbeiten. Ich habe die Funktion genannt getHeader(packetNo,totalPackets) Was mir den Header für dieses Paket zurückgibt. Abhängig von der Größe des Headers hackte ich Daten, fege Daten an den Header und bekomme die gleiche Paketgröße.

Die Kopfzeile ist nicht festgelegt, da die Länge, die von verschiedenen Ziffern verbraucht wird PACKET_NO=1 , seine Länge wird für Packetno 10, 100, .. usw. anders sein

Ich füge derzeit keine Pakete in den Kopfzeilen auf. Ich füge gerade die Paketnummer ein, ich möchte sie einbeziehen, aber wie kann ich keine Pakete wissen, bevor die Headergröße verwendet wird, da der Header jetzt keine Pakete enthalten sollte und NO_OF_PACKETS = --- kann jede Länge haben.

Ich kann es durch eine Funktion bestehen, die keine Pakete berechnet, aber das wird so etwas wie brutale Kraft sein und unnötige Zeit und Verarbeitungsleistung verbrauchen. Gibt es eine intelligente Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Verwenden Sie keinen einfachen Text. Machen Sie Paket-Header zu zwei verpackten 4-Byte (oder 8-Byte, je nachdem, wie viele Pakete Sie erwarten) Ganzzahlen, z. B.

import struct
header = struct.pack('!II', packetNo, totalPackets)

Hier ist Dokumentation zum struct Modul.

Andere Tipps

Warum nicht die Anzahl der Pakete null, damit der Header repariert wird. Angenommen, Sie möchten 1 Milliarde Pakete in einer Nachricht unterstützen:

PACKET_NO=0000000001

ist die gleiche Länge wie:

PACKET_NO=1000000000

Dies wird natürlich eine Obergrenze für die mögliche Anzahl von Paketen erzeugen, aber es muss geben etwas Obergrenze, nein?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top