C# で利用可能な最大ダウンロード速度でダウンロードする必要があります。
FlashGet、IDM、およびその他のダウンロード マネージャーはできるようです。
魔法は複数の接続とhttpRange
ヘッダーにあります。
ファイルのサイズが100MBだとします。10個の接続を開く予定です。したがって、接続ごとに10Mbをダウンロードします。ここでhttp接続を開き、同じファイルのダウンロードを開始しますが、10個の接続が10個の異なるセグメントに割り当てられます。
接続1は送信しますRange: bytes=0-1048575
接続2は送信しますRange: bytes=1048576-2097151
等々
特別なことではありません。同じファイルへの複数のダウンロード接続を開き、セグメント化されたダウンロードを使用して、各接続がファイルから異なるバイト範囲を取得しているだけです。
詳細については、例を参照してください - http://www.ehow.com/how-does_4615524_download-accelerator-work.html
C# 側については、次のような既存の .NET プロジェクトを参照することをお勧めします - http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M
TCP プロトコルでウィンドウ サイズを設定する必要があります。しかし、この未来は.netではサポートされていません