【问题标题】:Sending a list over a network in java在java中通过网络发送列表
【发布时间】:2012-05-05 07:05:17
【问题描述】:

这是我的清单:

List<Form> to_be_sent=new ArrayList<Form>();

Form是一个实现可序列化的类,只包含字符串字段。
我可以这样做吗:

ObjectOutputStream writer = new ObjectOutputStream(resp.getOutputStream());
writer.writeObject(to_be_sent);
writer.close();

【问题讨论】:

  • 制作 ByteArrayOutputStream 并尝试。应该工作。
  • @Jochen :我想在尝试之前确认一下。必须进行许多更改才能尝试。
  • @tigran :我想这样发送对象,因为 list 也实现了可序列化。
  • 你只需要写一些测试代码,几行就可以了。你会得到你的答案。可以转化为字节的东西,可以通过网络传输。
  • @MarkByers :尝试它意味着对项目进行大量更改。我不想在不确定的情况下尝试它。在此之前,我们通常将它作为字符串发送。字符串构造是在 for 循环中完成的。

标签: java serialization arraylist


【解决方案1】:

有效!

这是一个最小的工作实现,它序列化一个 List,并通过套接字连接发送它并在另一端反序列化它,打印到达的内容。

public static void main(String[] args) throws Exception {
    List<String> list = Arrays.asList("one", "two", "three");
    Thread serverThread = new Thread(new Runnable() {
        public void run() {
            try {
                InputStream in = new ServerSocket(999).accept().getInputStream();
                Object object = new ObjectInputStream(in).readObject();
                System.out.println(object.getClass() + ": " + object);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    serverThread.start();
    Socket socket = new Socket("localhost", 999);
    new ObjectOutputStream(socket.getOutputStream()).writeObject(list);
    serverThread.join();
}

输出:

class java.util.Arrays$ArrayList: [one, two, three]

【讨论】:

  • 是的,它有效。整个列表数组正在被序列化并通过网络发送:)
猜你喜欢
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多