2016-11-05 122 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