0

サーバーからクライアントにファイルを送信するJAVAでクライアントサーバープログラムを作成しています。ファイルサイズが非常に大きい可能性があるため、ファイルを5つの部分に分割し、5つで同じクライアントに送信することにしました。異なるスレッド。

  • 私のアルゴリズムは、Java Zip APIを使用して、送信するファイルのzipファイルを作成することです。次に、Zipファイルを5つの部分に分割します。問題は、[ZIPAPI][2]にファイルを分割できるメソッドがないことです。 これは、スレッドを介してファイルを送信するために参照しているチュートリアルです。私を導くことができる人は誰でも私のアルゴリズムに何か問題がありますか、それとも私は別の戦略と関係がありますか?
4

2 に答える 2

2

分割部分から圧縮部分を分離する必要があります。これらをクライアントに送信する必要がある場合は、クライアントが次のチャンクを要求するのを待つ間、完全なzipファイルをメモリに保持したくないでしょう...したがって、最も簡単なアプローチは、最初にディスクにzipすることです。次に、そのファイルをチャンクで提供します。その時点では、それがzipファイルであるかどうかはまったく問題ではありません。実際、特定のファイルタイプ(画像、サウンド、ビデオなど)では、zipファイルをまったく使用したくない場合があります。

クライアントにファイル名とサイズを伝えてから、クライアントにファイルの必要なセクションを要求させることをお勧めします。次に、使用するチャンクサイズを決定できます。ファイルの適切なビットを検索し、クライアントが要求した量のデータを提供する必要があります。

于 2012-09-22T08:13:44.447 に答える
0

ファイルの分割はZIP機能ではありません。結果のzipファイルから複数のバイト配列を作成し(配列をセグメント化することにより)、各セグメントを異なるスレッドで送信できます。これは、昨年のダウンロードマネージャーが行うことと似ています。

クライアントは、バイト配列を正しい順序で再アセンブルするコードを持っています。おそらく、正しいシーケンス、復元するファイル名、予想されるセグメント数など、各セグメントにいくつかの追加情報を追加する必要があります。

于 2012-09-22T08:11:52.717 に答える