IPC с низкой задержкой между C ++ и Java

Как лучше всего реализовать C ++ / Java IPC в следующей ситуации?

(Кто-то недавно задал аналогичный вопрос , но мои требования более конкретны)

  1. У меня есть две программы - одна написана на C ++, другая - на Java, - которым необходимо взаимодействовать друг с другом. Оба работают на одной машине.

  2. Программы отправляют друг другу сообщения. Сообщения обычно короткие (менее нескольких сотен байт), но потенциально могут иметь размер 100 КБ или более.

  3. Сообщения не нужно подтверждать (т. Е. Не требуется модель запрос / ответ, такая как HTTP). Например, программа C ++ отправляет сообщение программе Java, а программа Java может ответить, отправив сообщение программе C ++ позже - и наоборот.

  4. Идеальное решение будет иметь а) очень низкий задержка, б) отсутствие проблем с безопасностью (пользователь не должен авторизовать порты для открытия и т. д.) и в) не зависит от платформы.

Моя первая мысль была об использовании сокетов - каждая программа будет действовать как сервер для другой. У сокетов больше накладных расходов, чем у других форм IPC, и я не знаю, как сервер сообщит клиенту номер порта, если я позволю системе автоматически назначать номера портов. Я также рассмотрел именованные каналы , но они не поддерживаются (по крайней мере, не всегда) на разных платформах. JNI выглядит как вариант, но может ли он пересекать границы процесса?

Есть предложения?

Спасибо!

ПОСЛЕДУЮЩИЕ ВОПРОСЫ

  1. Если я использую сокеты, нужно ли мне открывать два сокетов, чтобы обеспечить асинхронную связь, как описано выше?

13
задан Community 23 May 2017 в 12:17
поделиться