클래스의 인스턴스를 serialize하고 C++/Boost 라이브러리를 사용하여 TCP 연결을 통해 보내고 싶습니다. 거기에 너무 많은 작업 예제가 있습니다 ... 일부는 버퍼에 대한 텍스트 스트림을 사용하고 일부는 tcp::iostream
을 사용합니다. 어느 것이 나의 필요에 적합한 지 모르겠습니다.부스트/C++ 바이너리 형식으로 개체를 serialize하는 기본 방법
요구 사항 : 다른 아키텍처를 통해
- 휴대
- 데이터는 바이너리 형식에있을 필요 (엔디 언과 비트 수는 문제가되지 않습니다). 작동하지 않는
// 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;
:
현재 코드 (텍스트가 없습니다). 서버가 invalid signature
예외로 종료됩니다.
가능한 한 최대한 이식 가능한 코드를 작성하려고합니다. 그것이 부스트를 사용하는 이유입니다. 현재 아키텍처에 비해 바이너리 이식성을 무시할 수 있습니다. 비록 위의 동일한 기계에서 실행되지 않았지만 ... 나는 어쨌든 부스트 ASIO/직렬화 * 이진 직렬화에 대한 도움이 필요합니다. –
그래서 나는이 대답을 받아 들여 다른 [SO 질문] (http://stackoverflow.com/questions/16621317/serializing-binary-data-in-boost-fails-with-invalid-signature-error)에 질문한다. 감사합니다 –
나는 OP가 요구 한 것에 관심이 있고 나는 완전히 다른 길을 갔다.이 대답을 downvote 것이다. "질문 한 질문에 대답하는 방법"에 대해 ?? – CashCow