Передача объектов (либо вывод XML, либо любые типы объектов C ++) с сервера на клиенты и наоборот через сокеты - PullRequest
0 голосов
/ 09 октября 2011

Как передать результат вывода XML / другие типы объектов в C ++ через сокеты и убедиться, что данные не повреждены?Размер выходного файла может составлять от 100 КБ до 2 МБ.Библиотека sys / socket в UNIX позволяет мне отправлять только базовые типы данных (например, символьную строку) в качестве сообщения сокета.

Я знаю, что библиотека Boost AISO также является хорошей библиотекой для программирования сокетов, но я не уверен, позволит ли она отправлять выходные данные / типы объектов XML через сокеты.Скорость / производительность - главное беспокойство, и мой сервер намеревается подключить к нему несколько клиентов.Любые идеи / проблемы о том, как справиться с этим?Есть ли у вас примеры примеров кода, которые делают то же самое: отправка объектного типа данных через сокеты C ++?Не могли бы вы объяснить подход, который вы сделали?Некоторые примеры кодов / псевдокодов были бы действительно полезны.

1 Ответ

0 голосов
/ 09 октября 2011

Если вы хотите проверить правильность полученных данных, вы должны использовать CRC или другие кодировки для обнаружения ошибок. Однако сокеты пытаются это гарантировать, и вы можете проверить данные еще раз. Также при передаче по сети скорость и надежность являются компромиссом, вы должны выбирать между ними что-то в зависимости от вашего приложения.

Во-вторых, для отправки объектов данных вам нужно: Маршалинг или Сериализация . Вы можете маршалировать объекты данных перед их отправкой и создавать объекты данных при получении их на другой стороне. Вы можете сделать это самостоятельно с вашими протоколами или использовать готовые библиотеки.

Практика, при которой объект данных маршалируется в XML: this . (Примечание: я сам не проверял)

...