1

私の webapp では、ユーザーはファイルを相互にダウンロードできます。Aユーザーがファイルを共有している場合、ユーザーFBに接続した後、からAファイルをダウンロードできます。これまで、各ユーザーは次のような単純な接続を作成していました:別のユーザーと。このファイルは、各ユーザーのローカル ハード ディスクにあります。ユーザーがファイルをダウンロードできるようにするには、2 つのオプションが考えられました。FAHTTPxxx.xxx.xxx.xxx/FileList

  • ユーザーがファイルを共有したら、そのファイルをサーバーの web-app ディレクトリにコピーして、ダウンロード リンクが のようにシンプルになるようにし<a href="./FileToDownload">Click to download</a>ます。
  • 各ノードで個別の FTP サーバーを実行します。

これらのうちどれがより良いオプションかはわかりませんが、最初のオプションは非常に単純に思えます。webappディレクトリのどこかにファイルをコピーすることなく、各クライアントがファイルを共有できる方法は何ですか。この場合、どのように P2P プロトコルを使用できますか?

注:Tomcat 7を使用しています。

4

1 に答える 1

1

実際の P2P は、クライアント マシンでリッスン ソケットを開かなければ不可能です (クライアント マシンに何かをインストールする必要があります)。

ファイルをサーバーに保存したくない場合は、2 人のユーザー間のゲートウェイとして機能する「接続サーバー」をお勧めします。ユーザー A がアップロードし、ユーザー B が同時にダウンロードします。必要なのは、メモリ内にバイトバッファを作成することだけです。ダウンロードされたバイトはドロップされる可能性があります。

利用可能なファイルを更新し、サーバー側からのアップロード要求を受信するための小さなクライアント側プログラムを任意の言語で作成できます (アップロードも実行します)。サーバー側へのアップロードには TCP ソケットを使用することをお勧めします。アップロードされたバイト (ストリーム) を直接制御します。

ここには、考慮すべき興味深い技術的問題 (ブロック ストリーム、メタデータ (ファイル名、長さ、作成日など)、データの一貫性、エラー処理など) がいくつかあります。ナイスタスク。

認証と承認 (ファイルを表示できるユーザー) を制御できないため、FTP はお勧めしません。

于 2013-01-16T10:39:20.047 に答える