当前位置: 首页 > 知识库问答 >
问题:

RMI服务器如何响应多个RMI客户端调用?

颛孙博易
2023-03-14

我构建了一个基于文件下载器RMI客户端-服务器的应用程序。在这方面,我不了解不同客户端的工作。文件位于服务器端,RMI在其一侧有等效的代理服务器(称为存根)。我为这个应用程序使用了10个客户端和1个服务器。

问题1-我的问题是当多个客户端在从注册表查找后同时进行RMI调用时,客户端以什么顺序为他们播种/提供文件?意味着底层服务算法---是循环算法还是先进先出算法还是其他

我无法理解这一点,当我执行代码时,我只看到相应的文件正在同时下载,就像文件正在复制而不是下载一样。

问题2-一台服务器如何为如此多的客户端提供服务,以及以何种顺序使文件同时下载?

另外,我的服务器端方法没有同步,不需要同步!

共有1个答案

臧威
2023-03-14

问题1-我的问题是当多个客户端在从注册表查找后同时进行RMI调用时,客户端以什么顺序为他们播种/提供文件?

没有顺序。它们都同时进行。

表示底层的服务算法——是循环算法吗

OR FIFO算法

还是其他的?

没有。没有订购。

我无法理解这一点,当我执行代码时,我只看到相应的文件正在同时下载,就像文件正在复制而不是下载一样。

我不知道“复制而不是下载”是什么意思,但“同时”准确地描述了这种情况。

问题2-一台服务器如何为如此多的客户端提供服务,以及以何种顺序使文件同时下载?

通过多线程,或灵活使用多路I/O,或异步I/O。未指定。未指定任何内容。您不能假设它是单线程的,并且以任何方式进行了顺序化。

另外,我的服务器端方法没有同步,不需要同步!

另一个假设,又一次完全无效。RMI规范中没有任何东西可以证明这种信念的合理性。您不能假定RMI远程对象是单线程的。

 类似资料:
  • 我在客户端wnat纯java RMI,因为我需要能够重新启动服务器端。

  • 问题内容: RMI是否自己处理多个客户端?即 是否可以同时使用多个客户端的服务器功能? 如果没有,我该怎么做? 如果是,它如何工作?每次 调用 都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 问题答案: 是 这个怎么运作?每次调用都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 它为每个客户端连接创建一个线程。 如果一个客户端调

  • 问题内容: 我正在使用RMI编写密码系统的原型。 我有一个问题,因为当我启动两个客户端时,它们从OneTimePad类的服务器中的一个对象获得了响应。 因此客户端A获取为客户端b保留的密钥,由于特定的算法,这种情况不会发生。 服务器仅向客户端发送E和N变量(例如在RSA中),因此我无法序列化OneTimePad对象并通过网络发送它(因为它将具有所有密钥)。 如何为每个客户端创建OneTimePad

  • 我正在开发一个具有多个客户端的标准java RMI服务器。这些客户机有一个菜单,在那里他们可以调用服务器为他们做各种事情。 一种方法涉及一个队列,他们可以在其中将作业发送到队列并等待它得到处理。RMI服务器自动为所有客户端处理线程,但当涉及到此方法和队列时,我如何阻止此请求,例如: 首先调用客户端1,然后再调用客户端2(此处客户端1应首先从服务器接收消息,客户端2应等待服务器处理客户端1请求所需的

  • 问题内容: 如果我想在我的RMI应用程序中启用“双向”通信(即,允许服务器调用客户端上的方法,以及允许客户端调用服务器上的方法),则是使客户端成为还有远程课程吗? 另外,如果我打算将客户端的实例作为方法参数传递给服务器,我是否认为不需要在rmiregistry中添加“客户端类”是正确的吗? 最后一个问题,我所有的类是否仍需要在同一位置编译?IE可以在两台完全独立的计算机上编译服务器和客户端,并期望

  • 我们目前有一个服务器,它为他获得的每个请求创建一个新线程,因此基本上服务器获得他以后需要保存的数据。 现在,我们得到了实现RMI的请求,在这里我们可以观察当前保存的数据类型。 我怎样才能以最好的方式处理这个问题?我应该为每个线程创建一个RMI服务器吗?我可以在同一地址上拥有同一服务的多个实例,并让我的观察者注册到所有实例吗? 我正在使用RMI访问的谷歌示例:https://sites.google