我有一个 Java 电子表格应用程序,它提供的功能之一(我开发的)是工作表共享。基本上,任何人都可以成为客户端或服务器,因为应用程序同时具有服务器和客户端代码。作为服务器的用户创建共享,指定 IP,然后创建并激活共享(最佳情况),服务器在其 IP 和选定端口上监听客户端。
对于自动发现,我通过 UDP 广播使用 DatagramSockets,而“真正的通信”是基于 TCP 的(在客户端已连接之后)。但是,我正在尝试通过该 UDP 套接字发送 List
,但我不知道该怎么做。该列表包含服务器上的 Activity 共享,我需要将其发送给客户端,以便客户端知道可以连接到什么。
事情是这样的:
客户端 -> 通过向网络发送数据包来查找 Activity 服务器 -> 服务器监听并发回数据包。该数据包应该是List
(如果可以通过这些类型的套接字发送它)。
有人能解答我的问题吗?谢谢。
最佳答案
您可以在发送之前将列表转换为 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();
只需确保放入列表中的所有对象都实现可序列化即可。
关于java - 通过DatagramSocket发送列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013142/