ファイル共有用のミドルウェア システムを実装する必要があり、さまざまなソースから別々の部分を同時に送受信する bittorrent と同じように、ファイルを分割する必要があります。それ、どうやったら出来るの?それはライブラリですか、それともファイル分割を自分で実装する必要がありますか?
4 に答える
ファイルをブロックに分割して、それぞれ 100KB とします。次に、各ブロックで SHA ハッシュ (またはその他のハッシュ アルゴリズム) を計算します。したがって、ファイルが 905KB の場合、そのようなハッシュが 10 個計算されます。
サーバーには、提供する各ファイルのハッシュ定義ファイルが含まれます。このハッシュ定義ファイルには、ファイルのすべてのブロックのリストとハッシュが含まれます。したがって、サーバーが test.exe と呼ばれる 905 KB のファイルを提供している場合。次に、ファイルの 10 個のハッシュのリストを含む test.exe.hashes という別のファイルを作成します。
クライアントはハッシュ定義ファイルをダウンロードし、すべてのブロックが含まれていることを確認します。クライアントは各ブロックを個別に要求でき、ダウンロード後、最後にハッシュを再度計算して、破損がないことを確認できます。
ファイルを物理的に分割する必要はありません。ファイルの分割は、関心のある部分を読み取るだけです。ファイルの最初のブロックはバイト範囲 0 から 102399 で、次のブロックは 102400 から 204800 です。等々。したがって、ファイルを開き、その位置をシークし、データを読み取り、ファイルを閉じるだけです。
ソロモンリードエンコーディングの使用を検討することをお勧めします。これにより、最終ブロックの取得がはるかに簡単になります。これは、MicrosoftがAvalaunchで採用したルートです。
Split & Concat (GNU ソフトウェア) の実装を見てください。