2008-11-11 262 views
2

在C服務器和Java小程序之間傳遞數據的最佳方式是什麼?目前它是通過使用緩衝區並使用memcpy將字節複製到它來完成的,但是如果對象發生變化,我必須搜索它發送到applet的每個實例並將其更改。將數據從C傳遞給Java

有沒有更好的方法來將對象傳遞給java?你會怎麼做?

編輯說明:它只從C服務器轉到Java applet,沒有java servlet。 Applet傳遞給C服務器的唯一信息是一個十六進制數字,表示要採取的操作

回答

4

你可能想看看Protocol Buffers

他們讓你定義的結構化數據,然後生成的代碼在任何支持的語言的讀寫消息。唯一的問題是我認爲他們現在只支持C++,但我知道對直接C實現有興趣。

1

我將在兩個應用程序之間打開一個套接字連接。您可以將對象序列化爲一個字節數組,並讓Java servlet將它反序列化爲具有相同值的Java對象。這樣如果類定義改變了,你只需要在兩個地方改變代碼。

1

我會在C端序列化對象到XML或谷歌protobuf,並使用單個解串器在applet端反序列化它們。即沒有多於一個類進行反序列化。讓用戶知道您對序列化進行了版本化,並且如果嘗試讀取的版本不是向後兼容的,則執行反序列化的對象將引發異常。在代碼中進行序列化和反序列化是一種不好的做法。

+0

如果性能成爲問題,這可能不是一個好的解決方案。 XML是不是非常節省空間 – 2008-11-11 22:59:55

+0

小程序的一些用戶在撥號,所以它會... – Malfist 2008-11-11 23:16:19