Bevorzugte Methode zum serialisieren eines Objekts mit Boost/C++ - Binär-format

Möchte ich zum serialisieren von Instanzen einer Klasse und schickt Sie über die TCP-Verbindung mit C++ /Boost-Bibliotheken. Es gibt zu viele Beispiele gibt... Einige mit text-streams für Puffer und einige mit tcp::iostream. Ich bin mir nicht sicher, welche ist geeignet für meine Bedürfnisse.

Anforderungen:

  1. Portabilität über verschiedene Architekturen (endiannes und Bitanzahl sollte kein problem sein)
  2. Daten müssen im binary-format. (Es ist kein text)

Aktuelle code:

//Client side:
boost::asio::streambuf b;
std::ostream os(&b);
boost::archive::binary_oarchive oa(os);
message m; //The `message' class is serializable
//construct `m'
oa << m;
boost::asio::write(socket,b.data(),boost::asio::transfer_all());

//Server side:
boost::asio::streambuf b;
std::istream is(&b);
boost::archive::binary_iarchive ia(is);
boost::asio::read(socket,b,boost::asio::transfer_all());
message m;
ia >> m;

Die nicht arbeiten. Server beendet sich mit invalid signature Ausnahme.

InformationsquelleAutor sorush-r | 2013-05-17

Schreibe einen Kommentar