【问题标题】:Java - Passing an ArrayList of Objects through TCPJava - 通过 TCP 传递对象的 ArrayList
【发布时间】:2016-11-05 14:38:12
【问题描述】:

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

在客户端我有一个形状对象的 ArrayList,我在其中添加了一个新的三角形、矩形等并将它们添加到这个 ArrayList。当我打开与服务器的连接时,我在传递 ArrayList 时遇到问题。

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

谢谢

【问题讨论】:

  • 您能添加到目前为止所做的任何代码示例吗?是的 - 您需要某种形式的序列化才能通过 TCP 连接发送对象,例如,请参阅 stackoverflow.com/questions/707987/…

标签: java arraylist tcp tostring shape


【解决方案1】:

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

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

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

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

【讨论】:

  • 不错的一个。喜欢!
【解决方案2】:

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

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

要注意的一件事:您的形状类需要可序列化!那么其他任何事情都只是关于使用现有的有据可查的库!

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2011-07-19
      相关资源
      最近更新 更多