通过 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 存根确实是可序列化的,这是注册表的基础。
我希望通过 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 存根确实是可序列化的,这是注册表的基础。