2013-04-24 81 views
0

我的第一個問題是,我應該序列化arrayList中的每個單獨的對象還是應該序列化整個arrayList,因爲我知道ArrayLists是可序列化的。從服務器發送序列化對象的ArrayList到客戶端(TCP)

另外,我將如何將它從服務器發送到客戶端。我正在考慮在服務器端使用ObjectOutputStream。但我認爲我的導師希望每一個對象都被序列化。

我將如何序列化每個對象,然後將其添加到ArrayList。在將它添加到ArrayList之後,我需要將ArrayList發送給客戶端,客戶端在接收它之後,將對每個對象進行反序列化並讀取它。

回答

0

我該如何序列化每個對象然後將其添加到ArrayList。

你不會。您只需將其添加到ArrayList並將其序列化即可。

在將它添加到ArrayList後,我需要發送ArrayList到客戶端,它在接收到它之後,將對每個對象進行反序列化並讀取它。

否客戶端將反序列化ArrayList。完成。

+0

你認爲你可以給我一個關於如何通過TCP發送序列化的ArrayList的線索,比如什麼類型的流或者我應該做些什麼? – 2013-04-24 01:30:39

+0

@Anienien Eh?你已經提到過你自己的ObjectOutputStream。這就是答案。 – EJP 2013-04-24 01:40:35

+0

哦,好的。因此,只需將對象添加到像普通的arrayList,然後使用objectOutputStream來發送ArrayList,對吧? – 2013-04-24 01:47:00

0

無論如何實現序列化項目,您還需要序列化您發送它們的任何內容。我沒有看到序列化可序列化列表與單獨執行序列化之間沒有實際區別。那麼你仍然需要序列化列表本身。

如果您不需要使用ObjectInputStream,只是爲了序列化和發送,請考慮使用XML。例如,您有幾個選項 - XMLEncoder/XMLDecoder(較舊)或JAXB(較新)。通過ObjectInput/OutputStream進行XML序列化的一個優點是數據是文本的並且(相對)可以在線上讀取。

+0

謝謝,但我認爲我需要堅持ObjectInputStream。我不知道我的老師是否認可XML序列化並批准它。 – 2013-04-24 01:31:33

+0

「您還需要序列化您發送的任何內容」。不,你不會。您*只*需要序列化容器。 – EJP 2013-04-24 04:22:11

+0

OP特別詢問他是否可以序列化內容。雖然我同意你所有你需要的是序列化該集合,但OP正在考慮逐項序列化。我的觀點是,無論你的效率如何 - 無論是一次一個還是一個一個,事實上,收集本身必須被序列化,才能在jvm之外發送。 – 2013-04-24 16:47:13

相關問題