我正在用Java编写客户端/服务器应用程序,我正在使用TCP传输我存储在ArrayList中的数据(即字符串数组的ArrayList)。
将数据从一个数据传输到另一个数据的最佳方法是什么?我应该制作一个长字符串并使用PrintWriter的println()还是有更好的方法?
非常感谢!
答案 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。但是,这里的最小努力(并且最不容易出错的)解决方案是序列化。