0

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

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

它是这样的:

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

任何人都可以对我的问题有所了解吗?谢谢你。

4

1 回答 1

3

您可以在发送之前将您的列表转换为 byte[],然后使用 Java 序列化将其转换回接收方上的列表。

    // 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();

只需确保您放入列表中的所有对象都实现了可序列化。

于 2012-06-13T10:44:59.573 回答