2011-05-05 33 views
3

我有2个应用程序,一个用C编写,另一个用Java编写,假设在同一台机器上运行。在它们之间实现IPC的最佳方式是什么?在Java和C应用程序之间的IPC

最好的意思可移植性,最少的用户认知度(防火墙弹出窗口...)等

+1

很多是依赖于操作系统的 - 例如:Linux和Solaris门。 – 2011-05-05 16:15:46

+0

您可以使用JNI或JNA来实现一个将调用C函数来使用IPC的库。有跨平台的C库提供IPC。如果你可以使用C++,那么你可以使用Boost库,它提供了IPC。 – Squall 2011-05-05 16:33:33

回答

4

我会使用Sockets over loop开始。这使您可以发送文本或二进制数据,并在一个进程开始或死亡时干净地处理。延迟时间大约为20-50微秒,具体取决于您对数据所做的操作以及发送的数量。

套接字是独立于平台的,可以在纯Java中使用。有数百万个可用于Java的示例和教程。

+1

套接字也是我的优先选择,但我担心用户将面临的防火墙弹出窗口。当套接字是“本地”时会发生吗? – user653952 2011-05-05 16:43:55

+0

我相信这是防火墙特定的。我有Windows Vista/7,并没有为此弹出窗口。 (也许这是第一次,但我早已忘记;) – 2011-05-05 16:45:31

1

我发现,最简单的方法是给exec从Java本机程序,然后通过过程输入和沟通输出流。这只适用于ASCII通信,但在大多数情况下都可以。这种方法适用于各种平台。如果应用程序独立于彼此启动,则文件或套接字都是跨平台的方法,并且如果需要可以使用二进制数据。

总是存在JNI或JNA,但它们通常最适合java和本机代码之间的紧凑型couplin。

相关问题