通过DatagramSocket发送列表?

时间:2012-06-13 10:40:16

标签: java list sockets client

我有一个Java电子表格应用程序,它提供的功能之一(我开发的)是工作表共享。基本上,任何人都可以是客户端或服务器,因为该应用程序同时具有服务器和客户端代码。作为服务器的用户创建共享,指定IP,然后创建并激活共享(最佳情况场景),服务器在其IP和选定端口上侦听客户端。

对于自动发现,我通过UDP广播使用DatagramSockets,而'真实通信'是基于TCP的(在客户端已经连接之后)。但是,我正在尝试通过UDP套接字发送List,我不知道该怎么做。 List包含我需要发送给客户端的服务器上的活动共享,因此它知道它可以连接到什么。

它是这样的:

客户 - >通过向网络发送数据包来查找活动服务器 - >服务器侦听并发回数据包。这个数据包应该是List(如果可以通过这种套接字发送它)。

有人能解释我的问题吗?谢谢。

1 个答案:

答案 0 :(得分:3)

您可以在发送之前将List转换为byte [],并使用Java Serialization将其转换回接收器上的List。

    // Sender
    List list = new ArrayList();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ObjectOutputStream outputStream = new ObjectOutputStream(out);
    outputStream.writeObject(list);
    outputStream.close();

    byte[] listData = out.toByteArray();


    // Reciever
    ObjectInputStream inputStream = new ObjectInputStream(new ByteArrayInputStream(listData));
    list = inputStream.readObject();

只需确保列入List的所有对象都实现Serializable。