Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RMI服务器如何响应多个RMI客户端调用?_Java_Algorithm_Network Programming_Client Server_Rmi - Fatal编程技术网

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

Java RMI服务器如何响应多个RMI客户端调用?,java,algorithm,network-programming,client-server,rmi,Java,Algorithm,Network Programming,Client Server,Rmi,我已经构建了一个基于RMI客户端服务器的文件下载程序。在这方面,我不理解不同客户的工作方式。文件位于服务器端,RMI在其端具有等效的代理服务器(称为存根)。我已经为这个应用程序使用了10个客户端和1个服务器 问题1-我的问题是当多个客户端同时进行RMI调用时 从注册表中查找后,客户端按什么顺序进行种子设定/提供 把文件给他们?表示底层服务算法--是循环算法还是FIFO算法或其他一些 我无法理解这一点,当我执行代码时,我只看到相应的文件同时被下载,就好像文件被复制而不是下载一样 问题2-一台服务器

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

问题1-我的问题是当多个客户端同时进行RMI调用时 从注册表中查找后,客户端按什么顺序进行种子设定/提供 把文件给他们?表示底层服务算法--
是循环算法还是FIFO算法或其他一些

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

问题2-一台服务器如何为如此多的客户机提供服务 文件同时下载的顺序是什么

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

问题1-我的问题是,当多个客户机在从注册表中查找后同时进行RMI调用时,客户机以什么顺序对文件进行种子设定/提供

毫无秩序地。它们都同时进行

表示底层服务算法——是否为循环算法

没有

或FIFO算法

没有

还是别的什么

没有,没有订单

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

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

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

通过多线程,或灵活使用多路复用I/O,或异步I/O。未指定。没有具体说明。你不能假设它是单线程的,并且以任何方式进行顺序化

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


另一个假设,再一次完全无效。RMI规范中没有任何东西可以证明这种观点。您不能假设RMI远程对象是单线程的。

为什么下载与复制不同?@dotvav-主要问题是q1。一次服务这么多客户机使用什么服务算法?请回答这个问题。据我所知,每个请求都会创建一个新线程,客户端连接会使用一个新的服务器端口。这可以通过在服务器代码中添加断点、在调试器中运行断点并启动几个客户端调用来验证。@dotvav-我对RMI不太了解,因此,我在等待更简洁的答案。谢谢你的帮助,如果你能写一个同样的答案,请做同样的。@EJP谢谢你纠正我,我希望你能回答这个问题:)一定有一些算法在服务器端指导下载过程!在我的问题中,文件复制意味着在同一台机器上复制,而下载意味着从不同的机器(即服务器)下载文件。请告诉我,如果它没有指定,那么它是如何工作的。RMI的内部代码可能使用了某种技术,因为它是Java,所以必须在所有平台上保持不变。请回答&谢谢你的详细回答。而且,我相信多路复用IO几乎类似于循环。意思是,一次一个,在服务器端切换一小段时间后,所有人都会得到服务,直到文件被下载。@asad你在做一些完全没有根据的假设。只要继续,就好像RMI服务器是自动多线程的,不会出错一样。你自己的观察证实了这一点。它没有“算法”或“循环”或“一次一个”或“时间切换标记”(不管是什么意思)。@shekharsuman您不知道他在使用什么操作系统,因此您无法断言它是如何进行调度的。考虑一个抢占式实时操作系统。阿萨德的问题是关于RMI,而不是操作系统:参见标签。除非规范中有规定特定行为的措辞,否则无法通过提及任何实现来回答该问题:相反,规范中的措辞故意含糊其辞:“不保证”。关于算法的任何假设或声明都是完全无效的,并且与规范特别矛盾。@EJP感谢EJP和谢哈尔澄清了所有疑问。我实际上的意思是,如果多路复用IO与操作系统调度中使用的循环算法相同。谢哈尔明白这个比喻。但是,这个简洁的回答澄清了我的疑问。另外,最后一个问题只是我说的一点,不是你回答的问题。再次感谢EJP。。。