0

リモート メソッド呼び出しを使用して、リモート コンピューターからあなたのコンピューターにファイルを取得する方法を教えてください。自分のコンピューター上のファイル パスを指定し、リモート コンピューターから指定されたパスからファイルを取得できるはずです。助けてください

4

3 に答える 3

1

RMI (リモート メソッド呼び出し) は、他のコンピューターに接続するためのものではありません。これは、他の Java アプリケーションに接続するためのものです (ローカルまたはリモート マシンで実行できることは明らかです)。

したがって、RMI 経由でサーバーを呼び出すクライアントの 2 つのアプリケーションを作成できます。サーバーはクライアントの呼び出しを受け取り、ローカル ファイル システムからファイルを読み取り、それをクライアントに転送します。

しかし、IMHO RMI はこのタスクに最適な選択ではありません。おそらくより良い解決策は、ネイティブでサポートされているプロトコルの 1 つを使用してリモート マシンに接続し、ファイルを取得することです。

たとえば、両方のマシンが Windows を実行している場合、パスを使用してファイルを開くことができます\\remote-host\c$\dir1\dir2\file.txt

リモート マシンが Unix を実行している場合は、SSH を使用して接続できます。Jschなどの SSH プロトコルの純粋な Java 実装を使用するため、クライアント OS は関係ありません。サーバー側が Windows でクライアント側がそうでない場合は、Windows に SSH サーバーをインストールしてから Jsch を使用するか、クライアント マシンで Samba を使用できます。

どの場合でも FTP を使用できますが、追加の構成が必要になる場合があります。VFSなど、FTP を実装する純粋な Java ライブラリがいくつかあります。

于 2012-09-09T15:25:55.460 に答える
0

RMI は単なるテクノロジーです。それを行う 1 つの方法は、RMI に発行するサーバー マシンでプロセスを実行することですが、安全性が高すぎるようには見えません...

これらのファイルを FTP または SFTP で公開することは可能ですか? 少なくとも、ファイル交換の標準的な方法になるでしょう。また、ディレクトリ内のファイルを公開する単純な HTTP サーバーを実行することもできます。

このサービスを自分で実装する際の問題の 1 つは、リクエストを受け入れるときに注意する必要があることです。ファイルへのパスをサニタイズする必要があります。これはエラーが発生しやすく、誰かがハッキングする可能性が高くなります。

于 2012-09-09T15:24:21.107 に答える
0

正確には何をしているのですか?ファイルをバイト配列に読み込み、それをリモート メソッドの戻り値として渡すことができます。ただし、状況に応じて、他の (より簡単な) 方法があります。

于 2012-09-09T15:24:56.137 に答える