请告诉我如何使用远程方法Invocation将文件从远程计算机检索到您的计算机。我应该能够在我的计算机上提供文件路径并从远程计算机的指定路径中检索文件。请帮忙
答案 0 :(得分:1)
RMI(远程方法调用)不适用于连接到其他计算机。它用于连接到其他Java应用程序(显然可以在本地或远程计算机上运行)。
因此,您可以创建2个应用程序:通过RMI调用服务器的客户端。服务器将接收客户端的呼叫,从其本地文件系统读取文件并将其传输到客户端。
但恕我直言RMI不是这项任务的最佳选择。可能更好的解决方案是使用其本机支持的协议之一连接到远程计算机并检索文件。
例如,两台机器都在运行Windows,您可以使用路径列表\\remote-host\c$\dir1\dir2\file.txt
打开文件。
如果远程计算机正在运行Unix,则可以使用SSH连接到它。使用SSH协议的纯java实现,例如Jsch,因此客户端操作系统无关紧要。如果服务器端是Windows而客户端不是,则可以在Windows上安装SSH服务器,然后在客户端计算机上使用Jsch或使用Samba。
在所有情况下,您都可以使用FTP,但可能需要执行一些其他配置。有几个实现FTP的纯Java库,例如VFS。
答案 1 :(得分:0)
RMI只是一种技术。一种方法是在发布到RMI的服务器上运行一个prossess,但它似乎不太安全......
您是否可以使用FTP或SFTP发布这些文件?至少它将是一种交换文件的标准方式。您还可以运行一个简单的HTTP服务器来编写目录中的文件。
自己实施此服务的一个问题是,在接受请求时必须小心,您需要清理文件路径。这很容易出错,而且很有可能会有人攻击它。
答案 2 :(得分:0)
你在做什么?您可以将文件读入字节数组,然后将其作为远程方法的返回值。但是根据具体情况,还有其他(更容易)的方法。