Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Interprocess Communication between C++ app and Java App in Windows OS environment

We have a C++ application on Windows that starts a java process. These two apps need to communicate with each other (via snippets of xml).

What interprocess communication method would you choose, and why?

Methods on the table for us are: a shared file(s), pipes and sockets (although I think this has some security concerns). I'm open to other methods.

like image 456
David Coufal Avatar asked Jul 30 '09 21:07

David Coufal


2 Answers

I'm not sure why you think socket-based communication would have security concerns (use SSL). It is often a very good approach as it is language agnostic, assuming that you have a well-defined communication protocol. Have a look at Google's protocol buffers, for example - they generate the required Java classes and streams.

In my experience, file systems (especially network file systems) are not well suited to such communication as they are not necessarily tuned for messaging (I've seen caching issues result in files being not picked up by the target process for example).

Another option is a messaging layer (AMQ or Tibco for example) although this will likely involve a greater administrative overhead (plus expertise) to set up.

Personally I would opt for a pure-socket approach because of its flexibility and simplicity. You will be in complete control.

like image 102
oxbow_lakes Avatar answered Nov 11 '22 02:11

oxbow_lakes


I've used named pipes for communication between C# and a cross-platform c++ app and had nothing but good results. Barring that sockets is definitely the way to go.

like image 26
Ron Warholic Avatar answered Nov 11 '22 01:11

Ron Warholic