Java / C ++ связь через канал в Windows - PullRequest
3 голосов
/ 17 апреля 2010

У меня есть две отдельные программы, одна на Java и одна на C ++, обе работают на Windows. Нам нужно установить двунаправленное межпроцессное взаимодействие между ними.

До сих пор мы использовали это неуклюжее решение записи в текстовые файлы и чтения их с другой стороны, где производитель генерировал файл .lock, когда закончил запись, а потребитель удалял его, когда закончил чтение. .. как я уже сказал, неловко.

Если бы мы были на * nix, мы бы использовали канал, используя popen () на C ++ и RadomAccessFile на стороне Java. Вроде хорошо работает.

Что мы можем сделать в Windows? Можем ли мы использовать именованные каналы?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2010

Посмотрите на буферы протокола Google: http://code.google.com/apis/protocolbuffers/docs/overview.html

Это обеспечивает механизм сериализации между Java и C ++.

А затем Google для реализации потока C ++ для сокетов и отправки сообщений между Java и C ++ через TCP.

2 голосов
/ 17 апреля 2010

Я бы порекомендовал сокеты для IPC, если вы используете сочетание Java и C ++. Сокеты кажутся более надежным решением, чем запись / блокировка общего файла:).

Тем не менее, я укажу вам эту SO публикацию ... Кажется, вы можете использовать именованные каналы на стороне .NET и RandomAccessFile на стороне Java: http://v01ver - howto.blogspot.com/2010/04/howto-use-named-pipes-to-communicate.html

Дайте этому шанс ... это выглядит многообещающе

...