2010-11-03 2 views
5

Я пытаюсь отправить C++ с помощью объектной реализации соединения TCP:Сериализации и передавать объекты по протоколу TCP с использованием подталкивания

  • Моих объектов всех сериализации, используя импульс сериализация.
  • TCP-сервер/клиент выполнен с поддержкой asio.

В принципе, я хотел бы отправить такое сообщение, которое будет содержать тип сообщения (тип отправляемого объекта) и сами данные (сериализованный объект) и размер данных, чтобы я мог обрабатывать буфер (размер может меняться для объектов того же типа, что и POD).

Я немного застрял, потому что не знаю, как я могу отправить это. Я не понимаю, каковы шаги для преобразования данных в буфер символов и добавления дополнительной информации (тип сообщения &) в начале буфера, а затем предоставление этого буфера функции отправки соединения tcp, все, что делает как можно меньше копий.

Спасибо.

-

ответ

7

Here вы можете найти хороший пример того, как использовать повышение :: сериализации вместе с усилением :: ASIO.

Что-то вроде этого является основой того, что вам нужно:

std::ostringstream archive_stream; 
boost::archive::text_oarchive archive(archive_stream); 
archive << YOUR_DATA; 
outbound_data_ = archive_stream.str(); 
boost::asio::async_write(socket_, boost::asio::buffer(outbound_data_), handler); 
+0

спасибо за ответ. Какой тип вы указываете исходящим данным? – Arthur

+0

Я получил код [здесь] (http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/example/serialization/connection.hpp). outbound_data_ объявляется как std :: string – peoro

Смежные вопросы