C++: Z.B. doubles über bestehende Verbindung versenden
-
Hallo,
ich habe mit boost eine TCP IP-Verbindung hergestellt. Jetzt würde ich gerne Daten übertragen, z.B. Messdaten. Wie sende ich diese am besten? Also von der Theorie, woher weiß die Gegenseite, dass sie z.B. eine "ganze" double-Zahl empfangen hat?
-
Weiß sie nicht. Die Daten werden als ein Haufen Bytes übertragen. Du musst die Bedeutung der Bytes in einem Protokoll definieren. Beachte dabei auch, dass die Byte-Repräsentation von double-Zahlen je nach Plattform variiert.
-
Es werden lediglich Bytes gesendet, die Empfangsseite kann vom Stream her nicht wissen, wie diese zu lesen sind. Etwa gibt der Empfänger den Format der Daten vor oder die Daten werden in Form einen Protokolls gesendet, welches anfangs aussagt, wie restliche Daten gelesen werden sollen.
-
Ich habe jetzt ein bisschen überlegt... gibt es da nichts fertiges oder ein erprobtes Vorgehen? Speziell sieht es auch so aus, dass ich Daten zwischen C++ und .Net austauschen möchte.
Also hat z.B. Boost für C++ etwas passendes, um Daten zu versenden?
-
Ich kenne mich mit Boost nicht so gut aus, bezweifeln tue ich es trotzdem.
Die Antwort bleibt die gleiche: es werden nur Bytes gesendet, gib den Format also selber vor oder verwende ein Protokoll!
Beispiel: HTTP Protokoll
-
Es gibt boost asio und boost serialization. Die könnten dir vielleicht helfen.
-
oder soll man den double lieber als string versenden so das es keine probleme mit dem double format gibt? kann ja sein das der kommunikationspartner ein anderes double format nutzt auch wenn unwahrscheinlich
-
-
Cap'n Proto ist viel hipper: http://kentonv.github.io/capnproto/