gpt4 book ai didi

java - RMI 多个客户端 - 每个客户端都有一个服务器对象

转载 作者:行者123 更新时间:2023-12-04 05:02:47 25 4
gpt4 key购买 nike

我正在使用 RMI 编写密码系统的原型(prototype)。

我有一个问题,因为当我启动两个客户端时,它们从 OneTimePad 类的服务器中的一个对象得到响应。

所以客户端 A 接收到为客户端 b 保留的 key ,由于特定的算法,这种情况不可能发生。

服务器仅向客户端发送 E 和 N 变量(如在 RSA 中),因此我无法序列化 OneTimePad 对象并通过网络发送它(因为其中包含所有 key )。

如何为每个客户制作一个 OneTimePad 类的对象?

最佳答案

我在 2001 年的书中将其称为远程 session 模式。 Registry 中的远程对象是一种登录服务器,仅导出 login()方法。 login()方法,如果成功,每次调用返回一个新的远程对象,它基本上是一个每个客户端的远程 session 对象。此 session 对象可以导出 logout()方法,不导出自身,也可以实现Unreferenced,这样 unreferenced()方法也会自行取消导出(或者您可以依赖 DGC,它无论如何都是相同的:使用 Unreferenced 让您有机会记录它)。这个远程 session 对象导出登录的客户端应该有权访问的所有远程方法,并且因为它是每个客户端的,所以它可以保存客户端状态,因此它是一个 session 。

public interface RemoteLogin extends Remote
{
RemoteSession login() throws RemoteException;
}

public interface RemoteSession extends Remote
{
void logout() throws RemoteException;
void myMethod(...) throws RemoteException; // whatever you need
}

public class RemoteLoginImpl extends UnicastRemoteObject implements RemoteLogin
{
// ...
public RemoteSession login()
{
// ...
return new RemoteSessionImpl(); // whatever arguments you need
}
}

public class RemoteSessionImpl extends UnicastRemoteObject implements RemoteSession, Unreferenced
{
// ...
}

关于java - RMI 多个客户端 - 每个客户端都有一个服务器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15912558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com