【问题标题】:Sending an ArrayList of serialized objects to client (TCP) from server从服务器向客户端 (TCP) 发送序列化对象的 ArrayList
【发布时间】:2013-04-24 01:08:56
【问题描述】:

我的第一个问题是,我应该序列化 arrayList 中的每个单独的对象,还是应该序列化整个 arrayList,因为我知道 ArrayList 是可序列化的。

另外,我如何将它从服务器发送到客户端。我正在考虑在服务器端使用 ObjectOutputStream。但我认为我的导师希望每个对象都被序列化。

我将如何序列化每个对象,然后将其添加到 ArrayList。将其添加到 ArrayList 后,我​​需要将 ArrayList 发送到客户端,客户端在接收到它后,将对每个对象进行反序列化并读取它。

【问题讨论】:

    标签: java serialization tcp arraylist


    【解决方案1】:

    如何序列化每个对象,然后将其添加到 ArrayList。

    你不会的。您只需将其添加到 ArrayList 并对其进行序列化即可。

    将它添加到 ArrayList 后,我​​需要将 ArrayList 发送给客户端,客户端在收到它后,将对每个对象进行反序列化并读取它。

    没有。客户端将反序列化ArrayList。完成。

    【讨论】:

    • 你认为你可以给我一个线索,告诉我如何通过 TCP 发送一个序列化的 ArrayList,比如什么类型的流,或者我应该其他什么?
    • @AnAlien 嗯?你自己已经提到了ObjectOutputStream。这就是答案。
    • 哦,好吧。所以只要像往常一样将对象添加到arrayList,然后使用objectOutputStream发送ArrayList,对吗?
    【解决方案2】:

    无论您如何实现对项目的序列化,您还需要对发送的任何内容进行序列化。我认为序列化可序列化列表与单独进行序列化之间没有真正的区别。然后你仍然需要序列化列表本身。

    如果您不需要使用 ObjectInputStream,只是为了序列化和发送,请考虑使用 XML。你有几个选择——例如XMLEncoder/XMLDecoder(旧)或JAXB(新)。与 ObjectInput/OutputStream 相比,XML 序列化的一个优势是数据是文本的,并且(相对)在线可读。

    【讨论】:

    • 谢谢,但我认为我需要坚持使用 ObjectInputStream。不知道老师是否认可XML序列化并认可。
    • “您还需要序列化您发送的任何内容”。不,你不会。您需要序列化容器。
    • OP专门询问他是否可以序列化内容。虽然我同意你的观点,你只需要序列化集合,OP 正在考虑逐项序列化。我的观点是,不管你的效率如何——一次或一项,事实仍然是集合本身必须被序列化以发送到 jvm 之外。
    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2013-06-11
    • 2017-05-03
    • 2015-12-26
    • 1970-01-01
    相关资源
    最近更新 更多