2011-09-24 37 views
3

我想從我的C++程序以有效的方式傳遞字符串流到我的Java程序,但我不知道如何做到這一點。任何人都可以發佈鏈接/解釋有關如何實現這一點的基本想法?快速C++數據到Java傳遞

我想我寫數據到一個文本文件,然後從我的Java程序讀取文本文件,但我不知道,這將是速度不夠快。我需要它,以便可以在16ms內傳輸一個字符串,以便我們可以在一秒鐘內將約60個數據字符串傳送到C++程序。

+1

爲什麼不簡單地通過套接字流數據?例如使用標準輸入和標準輸出。 –

回答

2

文本文件可以很容易地寫入和價值的內容與向上60串在僅僅幾毫秒讀取。

一些替代品,如果你發現你正在運行到反正定時的煩惱:

使用套接字編程。 http://beej.us/guide/bgnet/output/html/multipage/index.html。 套接字應該足夠快。

還有其他的替代品,如TIBCO消息服務,這將是一個數量級比你所需要的速度更快:http://www.tibco.com/

另一種方法是使用一個MySQL表來傳遞數據,並有可能只需設置一個環境變量,以表明應該查詢最近條目的表格。

或者我想你可以只使用一個環境變量本身傳達的所有信息的 - 60個字符串不是很多。

前兩個選項是更體面的解決方案雖然。

+0

您是否知道Tibco用於IPC的操作系統? –

+0

對於文本文件,您將如何確保寫保護?這樣在寫入期間不會發生讀取事件?它是由操作系統自動完成的嗎? – Andrew

+0

我相信他們的一些產品使用共享內存。除此之外,我不知道。 – loki11

0

差不多你這樣做的任何方式將是快。一個文件可能是最慢的,它可能總共大約10ms!如果你還必須創建一個新的連接(它是連接,而不是最耗時的數據),那麼套接字也是類似的。使用套接字的優點是發送方和接收方知道已經產生了多少數據。如果您使用的是文件,則需要另一種說法,文件現在已完成,您應該閱讀它。例如的插座;)

如果C++和Java是在相同的過程中,可以使用的ByteBuffer包裹C數組和導入到Java在大約1微秒。

+0

如何到ByteBuffer的事情?你能提供一個鏈接嗎? –

+0

我認爲你的意思是比Javadoc涵蓋的內容更具體。 https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html如果是這樣,你有什麼想法?順便說一句,從那時起我寫了一個圖書館,這是這個戰略的延伸https://github.com/OpenHFT/Chronicle-Bytes –