質問

ファイル共有のためにミドルウェアシステムを実装する必要があります。また、bittorrentで起こることとは異なり、ファイルを分割する必要があります。それ、どうやったら出来るの?ライブラリですか、それとも自分でファイルを分割する必要がありますか?

役に立ちましたか?

解決

ファイルをブロックに分割します。たとえば、それぞれ100 KBです。次に、各ブロックでSHAハッシュ(または他のハッシュアルゴリズム)を計算します。そのため、ファイルが905KBの場合、10個のハッシュが計算されます。

サーバーには、提供する各ファイルのハッシュ定義ファイルが含まれます。このハッシュ定義ファイルには、ファイルのすべてのブロックのリストとハッシュが含まれます。サーバーがtest.exeという905KBファイルを提供している場合。次に、test.exe.hashesという別のファイルを作成します。このファイルには、ファイルの10個のハッシュのリストが含まれています。

クライアントはハッシュ定義ファイルをダウンロードし、すべてのブロックが含まれていることを確認します。クライアントは各ブロックを個別にリクエストでき、ダウンロード後、最後にハッシュを再計算して破損がないことを確認できます。

ファイルを物理的に分割する必要はありません。ファイルを分割するのは、関心のある部分を読み取るだけです。ファイルの最初のブロックはバイト範囲0〜102399、次のブロックは102400です204800などに。そのため、ファイルを開き、その位置を探し、データを読み取り、ファイルを閉じます。

他のヒント

Split&の実装を見てくださいConcat(GNUソフトウェア)。

Solomon-Reedエンコーディングの使用を検討してください。最終ブロックの取得がはるかに簡単になります。これは、MicrosoftがAvalaunchで採用したルートです。

対象外:なぜBitTorrentまたはそのようなものを実装しないのですか?多くのオープンソースクライアント(つまり、 Azureus )があり、プロトコルは本当にシンプルもう少し詳細な記事もありますが、これにはいくつかの拡張機能が含まれています。スペックは常に正しい。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top