我正在寫一個客戶端/服務器應用程序在Java中,我正在使用TCP來傳輸我存儲在ArrayList中的數據(即字符串數組的ArrayList)。在Java中通過TCP發送ArrayList <String[]>的最佳方法?
將數據從一個傳輸到另一個的最佳方法是什麼?我應該製作一個長字符串並使用PrintWriter的println()還是有更好的方法?
非常感謝!
我正在寫一個客戶端/服務器應用程序在Java中,我正在使用TCP來傳輸我存儲在ArrayList中的數據(即字符串數組的ArrayList)。在Java中通過TCP發送ArrayList <String[]>的最佳方法?
將數據從一個傳輸到另一個的最佳方法是什麼?我應該製作一個長字符串並使用PrintWriter的println()還是有更好的方法?
非常感謝!
要有點添加到skaffman的答案:
OutputStream socketStream = ...
GZIPOutputStream objectOutput = new GZIPOutputStream(new ObjectOutputStream(socketStream));
objectOutput.writeObject(myDataList);
和客戶端上:
InputStream socketStream = ...
ObjectInputStream objectInput = new ObjectInputStream(new GZIPInputStream(socketStream));
ArrayList<type> a = objectInput.readObject();
假設客戶端和服務器,並用Java編寫的,並假設你堅持原始套接字,而不是一個更高級別的遠程框架:
OutputStream socketStream = ...
ObjectOutput objectOutput = new ObjectOutputStream(socketStream);
objectOutput.writeObject(myDataList);
同樣,使用ObjectInputStream
在接收端。
只要列表中的所有內容都實現java.io.Serializable
,就應該很好地工作。
+1肯定是* *第一選擇對於Java客戶端/服務器解決方案 – 2010-01-02 22:46:38
那麼RMI將是我的首選.... – skaffman 2010-01-02 22:47:15
謝謝,我會着眼於此,非常感謝! – 2010-01-02 22:48:39
您可能想要考慮JSON框架。見json.orgJSON = Javascript Object Notation
。即使名稱暗示使用Javascript,json.jar也是一個很好的序列化/反序列化工具。
啊我以前用Javascript使用JSON,可能是一個不錯的選擇謝謝! – 2010-01-02 22:51:51
你可能想看看Serialization。不過,您可以爲這種簡單的情況制定自己的格式。我個人喜歡bencoding。儘管最小的努力(也是最不容易出錯的)解決方案是序列化。
謝謝我會研究他們兩個! – 2010-01-02 22:50:14
謝謝,幫助! – 2010-01-02 22:54:54
但是,我會避免GZIP的東西,除非你在一個低帶寬的網絡,並且你有CPU週期來刻錄。 – skaffman 2010-01-02 22:56:01