2011-05-05 69 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。

相關問題