2016-11-05 129 views
0

我還是一個Java新手,並且有一個練習,我在客戶端和服務器之間建立了TCP連接。Java - 通過TCP傳遞對象ArrayList

在客戶端我有一個形狀對象的ArrayList,我添加一個新的三角形,矩形等,並將它們添加到此ArrayList。當我打開連接到服務器時,我遇到了傳遞ArrayList的問題。

你認爲我應該在傳遞給服務器端之前將ArrayList轉換爲字符串?

感謝

+0

你可以添加你迄今所做的任何代碼示例嗎?是的 - 您需要某種形式的序列化,然後才能通過TCP連接發送對象,請參閱http://stackoverflow.com/questions/707987/java-serialization-over-network例如 –

回答

0

的一點是,雙方只處理一個套接字級別的原始字節。這意味着:你必須*序列化*你的數據。

因此:看看Java序列化和ObjectInput/OutputStreams!

有一點需要注意:你的形狀類需要可序列化!然後,其他任何事情僅僅是使用現有的充分記錄的庫!

1

TCP允許從客戶端向服務器發送字節。你想通過一個List<Shape>。因此您需要一種將List<Shape>轉換爲字節的方法。

有幾種常見的方式來做到這一點:

  • 代表你的形狀爲一個XML文檔
  • 代表你的形狀爲一個JSON文件
  • 使用代表你的形狀爲一個字符串或字節數組自定義格式
  • 使用本地Java序列化,可以任意變換序列化對象的字節

最後一個是最簡單的一個,但它不允許將形狀發送到另一個Java程序,該程序也具有客戶機在其類路徑中具有的Shape類。

+0

不錯。喜歡它! – GhostCat