Потоковая передача данных из программы на C ++? - PullRequest
2 голосов
/ 26 июля 2011

Я хочу передать некоторые данные из моей программы другим подписчикам (другим программам).Эти программы могут использовать эти данные в качестве потокового события.

Что я хочу?

  • Как это вообще делается?
  • Какие-нибудь библиотеки или документы, указывающие на технику и плюсы / минусы?
  • Идеи, связанные с безопасностью?

Я сам выкопаю больше информации, даже если получу небольшую подсказку.

Пример:

Программа A : объект A изменен =======> Программа B : отчет об изменениях в объекте A

Ответы [ 4 ]

2 голосов
/ 26 июля 2011

Обычно используются две вещи: сокеты / каналы , которые являются просто вашими базовыми потоками байтов, и передача сообщений , которая немного сложнее, сделана для параллельного использования и горизонтальной масштабируемости.

0 голосов
/ 26 июля 2011

В целом это звучит так, как будто вы пытаетесь установить межпроцессное взаимодействие, или IPC.

В тегах к вашему вопросу вы ссылаетесь на Windows. Эта ссылка предоставляет широкий список параметров IPC в Windows.

Список тегов для вашего вопроса также говорит о независимости от платформы. Либо решение на основе сокетов, либо решение на основе труб будет в основном стандартным для большого числа платформ, для которых вы, вероятно, будете разрабатывать. Вы можете использовать сокеты напрямую или использовать одну из многочисленных кроссплатформенных оболочек, например. ZeroMQ и Повышение , чтобы скрыть некоторые детали.

Из вопроса не ясно, работают ли Программа A и Программа B на одном компьютере? Если нет, то лучше использовать сокеты.

0 голосов
/ 26 июля 2011

Лучшее, что я нашел:

  • Google Protobuf
  • Facebook Thrift

Плюсы:

  • Помогает с установлением форматов для потоковой передачи
  • Fast
  • Простота сборки

Минусы:

  • Элемент списка
  • Другие проблемы проектирования верхнего уровня (управление пропускной способностью, отмена) должны быть на вершине.
0 голосов
/ 26 июля 2011

Я не уверен, что он немного продвинутый, но взгляните на boost :: asio http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/overview/core/basics.html

...