2012-02-06 67 views
8

我正在研究一個應用程序,它具有託管在Glassfish服務器上的Java Web界面和作爲Linux守護程序實現的C內核。Java <-> C Bridge

我現在最大的問題是如何進行遠程過程調用。我需要在兩個方向調用函數和方法。這些是我可以想到的可能解決方案:

  1. 使用Java本地接口和網絡套接字來實現RPC。
  2. 的DBus - 據我知道的DBus可用於Java和C.

之間的RPC我想用最基本的方法,而無需使用外部庫或框架。 是否可以直接使用套接字來調用Java和C之間的函數/方法?我使用的操作系統是Centos。

有沒有更優雅的方式來連接兩種語言?

回答

8

沒有外部庫,只剩下套接字。但我會將DBus歸類爲外部庫,不是嗎?

如果C程序可以使用套接字,則不需要Java本地接口。 Java代碼可以open sockets from Java,調用C代碼偵聽的套接字。

如果你允許DBus,也許你應該考慮過多的網絡和RPC協議,這些協議有C和Java庫。 (再次,不需要使用JNI。)

以DBus的方式,看看Java documentationtutorial

+0

你會提供更多的信息如何實現? – 2012-02-06 08:46:46

+2

@ user1103606這是一個相當先進的話題,所以很難給出一個簡單的答案。你知道如何編寫TCP套接字連接和調用方法(例如使用反射嗎?) – 2012-02-06 09:27:48

+0

我知道如何編寫C網絡服務器和客戶端程序。你會解釋如何使用套接字從java調用C方法嗎?什麼是反思? – 2012-02-06 11:50:15

相關問題