Wie verwenden von protocol buffers?
Könnte mir bitte jemand helfen und mir sagen, wie zu verwenden, protocol buffers. Eigentlich möchte ich den Austausch von Daten über sockets zwischen einem Programm läuft auf unix und anoother läuft auf windows, um ausgeführt zu werden simulationsstudien.
Den Programmen, die sockets verwenden, um exchange-Daten, geschrieben in C/C++ und ich würde mich freuen, wenn somneone könnte mir helfen, zu verwenden, protocol buffers, um den Austausch von Daten in form von :
struct snd_data{
char *var="temp";
int var1=1;
float var2;
double var2;
}
Versuchte ich mehrere Möglichkeiten, aber noch sind keine Daten ausgetauscht werden, richtig. Jede Hilfe wäre sehr geschätzt
Danke für Eure Hilfe,
Irgendeinem Grund, dies ist ein community-wiki?
InformationsquelleAutor |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beginnen Sie mit der Definition, Ihre Botschaft in einem .proto-Datei:
(Ich denke, das float und double sind tatsächlich verschiedene Variablen...)
Dann kompilieren Sie es mit
protoc
und dann haben Sie code implementieren Sie den Puffer.Weitere Informationen finden Sie unter: http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html
Folgen Sie dem link habe ich - es ist ein tutorial behandelt die Verwendung von protocol buffers C++.
InformationsquelleAutor
Wie schreiben Sie Ihre Nachrichten in die Steckdose? Protobufs nicht-endian-und Kleinschreibung selbst, aber auch nicht protobufs definieren Sie einen transport-Mechanismus -- protobuf definiert eine Zuordnung zwischen einer Nachricht und Ihrer serialisierten form (die eine Folge von (8-bit) Byte), und es ist Ihre Verantwortung zu übertragen, diese Sequenz von bytes, die an den remote-host.
In unserem Fall definieren wir eine sehr einfache transport protocol; zuerst schreiben wir die Größe der Nachricht als 32-bit integer (big endian), dann kommt die Nachricht selbst. (Denken Sie auch daran, dass protobuf-messages sind nicht mit sich selbst identifizieren, was bedeutet, dass Sie müssen wissen, welche Botschaft Sie senden möchten. Dies ist in der Regel verwaltet mit ein wrapper-Nachricht enthält optionale Felder für alle Nachrichten, die Sie senden möchten. Finden Sie die protobuf-website und mailing-Listen-Archive für weitere Informationen über diese Technik.)
InformationsquelleAutor
Endian Typ behandelt wird, innerhalb von protobuf.
Finden Sie unter:
https://groups.google.com/forum/?fromgroups#!Thema/protobuf/XbzBwCj4yL8
Wie cross-Plattform ist Googles Protocol Buffer die Verarbeitung von floating-point-Typen in der Praxis?
InformationsquelleAutor
Sind beide Maschinen mit x86? Ansonsten muss man für big-endian und little endian unterschieden. Es ist auch Wert Aufmerksamkeit zu struct Verpacken. Vorbei Zeiger problematisch sein kann, auch aufgrund der Tatsache Zeiger sind in verschiedenen Größen auf verschiedenen Plattformen. Alle in der es viel zu wenig Informationen in deinem Beitrag zu sagen, für bestimmte, was schief läuft ...
InformationsquelleAutor
Die Antwort liegt in den endian Typ der übertragenen Daten, das ist etwas, müssen Sie sehr genau abwägen und prüfen. Schauen hier zu zeigen, was endianness tun können und dazu führen, dass Daten zu bekommen Durcheinander sowohl auf der Empfänger-und sender. Es gibt keine solche perfekte Maß der übertragung von Daten reibungslos, nur, weil die gesendeten Daten von einer unix-box-Garantien die Daten auf der windows-box in der gleichen Reihenfolge in Bezug auf die Speicher-Struktur für die Daten. Auch die Polsterung der Struktur auf der unix-box unterscheidet sich die Polsterung auf dem windows-Rechner, es läuft darauf hinaus, wie der Befehl Linie Schalter verwendet werden, denke Ausrichtung der Struktur.
Ich kann das nicht beantworten, da ich nicht weiß, google protocol buffers, sorry es auf, dass man. Überprüfen Sie Ihre Struktur, die Polsterung, der compiler könnte Polsterung es aus, dass es eine noch Größe. Sie können überprüfen, dass durch ein sizeof(struct snd_data) an beiden enden, um zu sehen, was es ist? Wenn Sie kommen in verschiedenen Größen, als könnte eine Erklärung Ihrer situation.
InformationsquelleAutor