Ich versuche, eine Anwendung zu schreiben, die Google-Protokollpuffer verwendet, um Daten (über eine Protokollverbindung von einer anderen Anwendung über eine TCP-Verbindung gesendet) zu deserialisieren. Das Problem besteht darin, dass es aussieht, als ob Protokollpuffer in Python nur Daten aus einer Zeichenfolge deserialisieren können. Da TCP keine wohldefinierten Nachrichtengrenzen hat und eine der Nachrichten, die ich zu empfangen versuche, ein wiederholtes Feld hat, weiß ich nicht, wie viele Daten zu versuchen und zu empfangen sind, bevor schließlich die zu deserialisierende Zeichenfolge übergeben wird.Wie verwende ich Python und Google Protocol Buffers zur Deserialisierung von Daten über TCP gesendet
Gibt es in Python irgendwelche guten Praktiken dafür?
+1 für eine unglaublich detaillierte und tolle Antwort. Vielen Dank!! – jathanism
Die Verwendung von 'struct.pack (" H ", len (data))' führt zu einer wichtigen Konsequenz: Die Daten müssen weniger als 65536 Bytes lang sein. Sie können die maximal zulässige Größe der Daten erhöhen, indem Sie ein unsigned long long anstelle von 'Q' (maximale Größe = 18000 Petabytes) verwenden. – Flimm