2010-10-12 4 views
2

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

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

+0

Какая ОС вы используете? –

+0

Я нахожусь в Windows. – martin71

ответ

2

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

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

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

1

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

0

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

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

0

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