Межпроцессное взаимодействие: один сервер и несколько клиентов - PullRequest
2 голосов
/ 12 октября 2010

У меня работает один «серверный» процесс, который будет извлекать данные по сети для других процессов, работающих на той же машине, что и серверный процесс.

Как передать данные с локального серверного процесса и с локальных клиентов?

Ответы [ 4 ]

2 голосов
/ 12 октября 2010

Для извлечения сетевых данных серверным процессом рекомендуется использовать Boost.Asio, предложенный @radman.

Между сервером и локальными клиентами Boost.Interprocess будет более эффективным, поскольку это межпроцессная передача данных, не требующая использования сети.

Каждая из этих библиотек Boost предоставляет готовую оболочку для сложных базовых API-интерфейсов Win32, поэтому вы, скорее всего, получите рабочее решение быстрее, используя библиотеки, чем создав собственный специализированный код с эквивалентной функцией.

1 голос
/ 12 октября 2010

Вы должны проверить Boost.Asio , оно соответствует вашей проблеме и является надежным.

0 голосов
/ 12 октября 2010

Я полагаю, что в Windows есть именованные каналы, которые будут работать аналогично предложениям в других ответах (особенно в предложении @ Irish для TCP-сокетов).Подробнее см. CreateNamedPipe () .

0 голосов
/ 12 октября 2010

Стандартные сокеты TCP отлично работают для межпроцессного взаимодействия между несколькими процессами на одном и том же компьютере или на разных компьютерах. Он стандартный, поддерживается практически на всех платформах и практически на всех языках программирования. Вы должны легко найти образец кода C ++.

Чтобы подключиться к сокету на той же машине, используйте «localhost» в качестве его имени или 127.0.0.1 в качестве его IP.

...