Java - 通过TCP传递对象的ArrayList

时间:2016-11-05 14:38:13

标签: java arraylist tcp tostring shape

我还是Java新手,并且练习了我在客户端和服务器之间建立TCP连接。

在客户端,我有一个Shape对象的ArrayList,我在其中添加一个新的Triangle,Rectangle等,并将它们添加到此ArrayList中。当我打开与服务器的连接时,我在传递ArrayList时遇到问题。

你认为我应该在传递给服务器端之前将ArrayList转换为字符串吗?

由于

3 个答案:

答案 0 :(得分:1)

TCP允许从客户端向服务器发送字节。您想要传递List<Shape>。因此,您需要一种方法将List<Shape>转换为字节。

有几种常见的方法可以做到这一点:

  • 将您的形状表示为XML文档
  • 将您的形状表示为JSON文档
  • 使用自定义格式将您的形状表示为字符串或字节数组
  • 使用本机Java序列化,可以将任何Serializable对象转换为字节

最后一个是最简单的一个,但它不允许将形状发送到除了另一个Java程序之外的任何其他程序,该程序也具有客户端在其类路径中具有的Shape类。

答案 1 :(得分:0)

关键是双方只是处理套接字级别的原始字节。这意味着:您必须*序列化您的数据。

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

要注意的一件事是:你的形状类需要可序列化!那么其他任何东西仅仅是关于使用现有的记录良好的库!

答案 2 :(得分:0)

确保您的对象为serializable。您不需要将ArrayList转换为String。