好久以前用DotNet 作了一個多線程的斷點下載工具,今天忽然須要用到一些東西,居然一時想不起了,翻了翻源碼,這裏簡單總結一下。 服務器
斷點下載 的基本協議採用的是Http 下載,那麼服務器如何響應斷點請求一個完整文件的部分數據呢,這裏須要用到 Http 協議頭 的 Range標記,客戶端發起請求的時候加上 Range標記 例如,Range:bytes=0-128 ,表示請求的文件的第1個到128個字節的數據,這時候服務器響應下載時會返回 Http 響應頭:Content-Range: bytes 0-128/200 ,這裏200是文件的總大小。下面是一個請求響應頭的詳細說明。 多線程
請求下載整個文件:
GET /file.rar HTTP/1.1
Connection: close
Host: 116.1.219.219
Range: bytes=0-801 //通常請求下載整個文件是bytes=0- 或不用這個頭
通常正常回應
HTTP/1.1 200 OK
Content-Length: 801
Content-Type: application/octet-stream
Content-Range: bytes 0-800/801 //801 app
注意:若是用戶的請求中含有range ,則服務器的相應代碼爲206。
206 - Partial Content 客戶發送了一個帶有Range頭的GET請求,服務器完成了它(HTTP 1.1新)。 工具