HTTP再開は、ダウンロードが「一時停止」されたときに接続が終了し、再開されたときに新しい要求が行われるため、多少誤称です。
新しいリクエストには範囲指定が含まれるため、サーバーはリクエストされたファイル全体の一部のみを送信します。
通常、最初にHEADリクエストを実行して、ファイルサイズ全体を取得します。
リクエスト
HEAD /big_file.zip HTTP/1.1
Host: www.example.com
応答
HTTP/1.0 200 OK
Accept-Ranges: bytes
Content-Length: 2000000
Content-Type: application/zip
次に、このようなリクエストを送信して、1,000,000〜2,000,000バイトのみをダウンロードできます(最初のダウンロードが1,000,000バイトで停止した場合)。
リクエスト
GET /big_file.zip HTTP/1.1
Host: example.com
Range: bytes=1000000,2000000
応答
HTTP/1.0 206 Partial Content
Accept-Ranges: bytes
Content-Length: 1000000
Content-Range: bytes 1000000-2000000/2000000
Content-Type: image/jpeg
...
それが一般的な原則です。cUrl 、、boost::asio
Windowsソケットを使用してC++で実装できます...さまざまな方法と多くの優れたチュートリアルがあります。