2012-03-22 93 views
2

我目前正在爲3D繪圖應用程序(用C++編寫,ruby是它的腳本語言)編寫一個ruby插件。 我想要做的是在與用java編寫的另一個應用程序之間進行通信,兩個程序都在同一臺計算機上運行。 集成到3D繪圖應用程序中的ruby版本相當精簡併且非常基礎,從我所瞭解的具有相當有限或不存在的套接字庫中。ruby​​和java之間的通信

有關如何在兩個應用程序之間交換信息的任何想法將不勝感激。

將要交換的信息量相當小。

+1

套接字,文件,數據庫... – 2012-03-22 06:10:15

回答

2

您的問題可能以多種方式回答。有這麼多的可能的解決方案......

一個最簡單的,然而這在我腦海中,是使用standard input and standard output redirection程序(用任何語言編寫)之間的溝通非常有效的方法。

您的Java程序需要執行一個Ruby程序,重定向輸入/輸出流。我不知道這個任務在Java中使用的函數,但是在Ruby中,方法是IO.popen(command,mode)

你的Ruby程序,叫這樣,從STDIN只是讀取和寫入STDOUT(普通方法gets和可用於puts

你還沒說你是編程什麼系統,所以我不知道你的平臺是否能夠處理這種重定向,或names pipes(這將是第二個簡單的解決方案)

+0

Windows和Mac OS.I將是誠實的,我非常自我教,當談到編程,所以我的shell,管等知識基本上是不存在的。我是考慮將信息輸出到文本文件或內存(可能不是正確的術語),而不是通過命令行讓紅寶石或Java知道已創建新信息並以此方式交換信息。 – BMac 2012-03-22 18:03:14

+0

我不確定你的意思,但我的建議不是關於命令行_parameters_。一個項目只是另一個項目,然後他們只是一起工作,可能需要一週或更長的時間。從技術上講,我的解決方案就像通過file_交換信息一樣,但您不需要考慮該文件的名稱。在文件系統中創建一個文件_might_是一個好主意,但是你也應該決定如何處理'always grow'文件 - 它可能會最終填滿你的所有磁盤空間。我喜歡你是自學的;-) – Arsen7 2012-03-26 08:03:00

0

如果性能要求不高,您可以使用計算機磁盤上的文件來更改兩個應用程序之間的信息。例如,如果要將EVENT1從Ruby應用程序傳輸到Java應用程序: Ruby應用程序寫入一個標誌文件在磁盤dir上調用event1.flag,而Java應用程序啓動Thead繼續搜索.flag文件的目錄。