range(請求引數)
用於請求頭中,指定第乙個位元組的位置和最後乙個位元組的位置,一般格式:
range:(unit=first byte pos)-[last byte pos]
例如:range:100-199,取檔案流的100至199之間的位元組。
range:100,取位置為100後的所有位元組。如果range 為正值,伺服器應該開始傳送從指定的 range 引數到 http 實體中資料的末尾之間的資料。
range:-99,取開始的100個位元組。如果range 為負值,伺服器應該開始傳送從 http 實體中資料的開頭到指定的 range 引數之間的資料。
content-range (響應引數)
用於響應頭,指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在伺服器向客戶返回乙個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。
一般格式:
content-range: bytes (unit first byte pos) - [last byte pos]/[entity legth]例如:content-range: bytes 1024000-1126399/7421120
http協議:
在c#中使用addrange方法向請求新增指定範圍的位元組範圍標頭
system.net.httpwebrequest所有的方法:
常用的方法為例:
void addrange(long from, long to);指定範圍起始、終止位置,來請求該片段的資料。
// 摘要:// 向請求新增指定範圍的位元組範圍標頭。
//// 引數:
// from:
// 開始傳送資料的位置。
//// to:
// 停止傳送資料的位置。
請求的range引數,我們可以清晰看到起具體值,這就是請求的片段。在這裡可以清晰的看到http協議版本、請求方法、請求位址等資訊
伺服器根據請求的range引數,只返回該片段的資料。我們可以清晰看到content-range的具體值。
注意:返回的statuscode變為了partialcontent,說明是部分資料。
** 含義
200 ok 請求成功返回
206 partial content 部分資料
//更新當前進度
this.currentsize += readtotalsize;
//如果返回的response頭中content-range值為空,說明伺服器不支援range屬性,不支援斷點續傳,返回的是所有資料
if (response.headers["content-range"] == null)}}
}
專案原始碼:
HTTP 斷點續傳
客戶端請求域 range 格式如下例子 第乙個500位元組 位元組偏移量0 499,包括0和499 range bytes 0 499 第二個500位元組 位元組偏移量500 999,包括500和999 range bytes 500 999 最後500位元組 位元組偏移量9500 9999,包括9...
IOS斷點續傳
asihttprequest可以實現斷點續傳。網上有一些介紹類似使用 request setallowresumeforfiledownloads yes 不過,通過asihttprequest的非同步請求以及delegate還是可以實現斷點續傳的。本文還是以grails編寫斷點續傳伺服器端為例。非...
linux斷點續傳
在linux伺服器上經常要用scp傳輸大檔案,可能由於網路等原因出現間接性中斷,導致傳輸一半的檔案突然中斷。其實scp是可以續傳的,它需要rsync以及它的ssh協議 舉例如下 rsync p rsh ssh home.tar 192.168.205.34 home home.tar,再輸出密碼後,...