在Windows上通过pipe道进行Java / C ++通信

我有两个单独的程序,一个是Java,一个是C ++,都在Windows上运行。 我们需要做两者之间的双向进程间通信。

到目前为止,我们正在使用这种写入文本文件的尴尬解决scheme,并在另一侧读取它们,生产者在完成写入时会生成一个.lock文件,消费者在完成读取时将删除它。我说,尴尬。

如果我们在* nix上,我们将在C ++和Java端的RadomAccessFile上使用popen()。 它似乎运作良好。

我们可以在Windows上做什么? 我们可以使用命名pipe道吗?

谢谢。

看看谷歌的协议缓冲区: http : //code.google.com/apis/protocolbuffers/docs/overview.html

这提供了Java和C ++之间的序列化机制。

然后Google为套接字的C ++流实现,并通过TCP在Java和C ++之间发送消息。

如果你正在使用Java和C ++的混合,我会推荐IPC的套接字。 套接字看起来像是写入/锁定共享文件的更健壮的解决方案:)。

不过,我会指出你这个 SO帖子…似乎你可以在.NET端使用命名管道,在Java端使用RandomAccessFile: http : //v01ver-howto.blogspot.com/2010/04/ HOWTO使用,命名管道到communicate.html

给一个镜头…它看起来很有希望