我希望通过UDP发送RMI存根,只是我不知道如何在发送方上创建新的DatagramPacket,并从接收器上的DatagramPacket.getData()返回的数组中重构存根。例如,我如何可靠地计算数据包的大小?
有人可以帮帮我吗?
谢谢,
欧文。
答案 0 :(得分:0)
您可以按照以下方式执行此操作:
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
并且在接收者处,与此过程相反,我将把这作为读者的练习。
但我的第一个问题是'为什么?'你为什么不像设计师那样使用RMI注册表?还是RMI本身?你这里不需要UDP。
NB RMI存根确实是可序列化的,这是注册表的基础。