【发布时间】:2017-03-15 14:30:30
【问题描述】:
我目前有一个需要在客户端和服务器之间快速通信的 java 程序。在尝试了 TCP 和 RMI 之后,我决定使用 UDP,这两种方法对我来说都太慢了。
我有多个 ArrayList,它们存储在一个 ArrayList 中,然后发送到服务器。此方法在 TCP 和 RMI 中运行良好,但在 UDP 中需要将其更改为字节。
ArrayList<Object> array = new ArrayList<Object>();
array.add(arrayList1);
array.add(arrayList2);
array.add(arrayList3);
array.add(arrayList4);
array.add(arrayList5);
array.add(arrayList6);
// Convert the ArrayList to bytes, then send to client
添加到发送到客户端的 ArrayList 的每个 ArrayList 都包含对象,每个 ArrayList 都包含不同类型的对象。大多数 ArrayList 包含由我创建的类产生的对象,但我认为没有必要显示它们。
我已经在互联网上搜索了将 ArrayList 的 ArrayList 转换为字节的答案,但 .getBytes() 方法不适用于 ArrayList 或其中的对象。
如果您需要我正在使用的代码的更多示例,请随时提出。上面的代码不是我的真实代码(因为对 ArrayList 进行编号会非常混乱),但它准确地表示了我想要实现的目标。
谢谢。
【问题讨论】:
-
您可以使用serialization,或将您的对象转换为标准格式,例如 JSON 或 XML。
-
我认为您必须为此使用序列化。你能查一下article吗?
-
他已经在做序列化(字节数组)了。使用 JSON 或 XML(这两种格式只能用于 http 或更高的协议)只会减慢速度。如果 TCP 对您来说不够好,我也不认为 UDP 会有所帮助(因为它基本上是没有安全性的 TCP)。我想你正在使用 Java 套接字?
-
另外,你也不能通过 TCP 发送 ArrayList,所以我不认为你一开始就使用 TCP。
-
是的,可以使用 ObjectOutputStream 通过 TCP 发送 ArrayList。