通过 UDP 发送 RMI 存根

Sending RMI stub over UDP

我希望通过 UDP 发送 RMI 存根,只是我不知道如何在发送方创建一个新的 DatagramPacket 并从接收方的 DatagramPacket.getData() 返回的数组重建存根。例如,如何可靠地计算数据包的大小?

谁能帮帮我?

谢谢,

欧文.

您可以按照以下方式进行:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(stub);
oos.close();
byte[] bytes = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, target, port);
// etc ... send this datagram

在接收方,这个过程的逆过程,我将把它留作 reader 的练习。

但我的第一个问题是 'why?' 为什么您没有按照设计者的预期使用 RMI 注册表?还是 RMI 本身?你在这里不需要UDP。

NB RMI 存根确实是可序列化的,这是注册表的基础。