Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > [boost] передать сериализованный класс по сети |
Автор: lison4ik 19.7.2010, 01:25 |
Заранее извиняюсь, не просмотрела до конца, может тема уже есть, но я второпях ![]() Сериализовала класс с lboost_serialization. По ходу работы программы проводятся вычисления и каждый раз нужно сериализовать класс и передавать по сети. Хочу использовать boost::asio. Программа большая, происходит это очень часто - хочется один раз при запуске программы открыть соединение и потом только отсылать данные клиенту, не закрывая соединение после каждой их передачи. Моя проблема: КАК организовать передачу по сети? Я в бусте новичок, может у самого класса сериализации есть что-то подходящее. Уже пробовала сериализовать класс в бинарный файл и посылать его. Но так не хочу. Можно ли это организовать каким-нибудь потоком, не сохраняя данные на диск? |
Автор: boostcoder 19.7.2010, 05:59 | ||
создавай объект-сериализатор с аргументом типа std::stringstream вместо std::fstream, после сериализации, бинарный массив получай методом std::stringstream::str(). для десериализации, конструируй объект std::stringstream с аргументом-исходным массивом.
|
Автор: SenkraD 19.7.2010, 08:31 |
lison4ik, собственно http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/examples.html#boost_asio.examples.serialization |
Автор: lison4ik 19.7.2010, 12:11 |
ура, большое спасибо за быстрый ответ! получилось! ![]() Только сейчас заметила, что http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/examples.html#boost_asio.examples.serialization тоже используется std::stringstream. Пример этот поначалу уже запускала со своим классом вместо stock.hpp, но сразу разобраться было трудно и я как-то запуталась. Вопрос решен! |