在Java中通过TCP发送ArrayList <string []>的最佳方法是什么?</string []>

时间:2010-01-02 22:42:03

标签: java networking tcp client

我正在用Java编写客户端/服务器应用程序,我正在使用TCP传输我存储在ArrayList中的数据(即字符串数组的ArrayList)。

将数据从一个数据传输到另一个数据的最佳方法是什么?我应该制作一个长字符串并使用PrintWriter的println()还是有更好的方法?

非常感谢!

5 个答案:

答案 0 :(得分:11)

假设客户端和服务器都用Java编写,假设你坚持使用原始套接字,而不是更高级别的远程处理框架:

OutputStream socketStream = ... 
ObjectOutput objectOutput = new ObjectOutputStream(socketStream);
objectOutput.writeObject(myDataList);

同样,在接收端使用ObjectInputStream

只要列表中的所有内容都实现java.io.Serializable

,就应该可以正常工作

答案 1 :(得分:3)

为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();

答案 2 :(得分:1)

您可能需要考虑JSON框架。请参阅json.org JSON = Javascript Object Notation。即使名称建议使用Javascript,json.jar也是一个很好的序列化/反序列化工具。

答案 3 :(得分:0)

许多人会为此使用Web服务框架,例如Apache CXF。您也可以向下一级到JAXB或XML Bean。

答案 4 :(得分:0)

您可能需要查看Serialization。不过,你可以为这样一个简单的案例制作自己的格式。我个人赞成bencoding。但是,这里的最小努力(并且最不容易出错的)解决方案是序列化。