這個貌似是RFC中關于http chunk的描述(來自于網上),但是我實在看不懂它描述的是什么意思,誰能用自然語言給翻譯一下?或者沒有實際的例子,謝謝了!
Chunked-Body = *chunk
last-chunk
trailer
CRLF
chunk = chunk-size [ chunk-extension ] CRLF
chunk-data CRLF
chunk-size = 1*HEX
last-chunk = 1*("0") [ chunk-extension ] CRLF
chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
chunk-ext-name = token
chunk-ext-val = token | quoted-string
chunk-data = chunk-size(OCTET)
trailer = *(entity-header CRLF)
最好能有個例子和它上面的描述對應起來。
uj5u.com熱心網友回復:
這個是描述http 當采用分塊傳輸編碼時,資料的格式。Chunked-Body就是進過編碼的資料,又上面描述可以知道分4個部分。*chunk, last-chunk , trailer ,CRLF 這4個連接起來的。
chunk = chunk-size [ chunk-extension ] CRLF
chunk-data CRLF
這個接著描述chunk的格式,顯示描述大小,然后\r\n,接著就是跟大小一樣長的資料,然后\r\n
chunk-size = 1*HEX 這里表示大小用16禁止數表示。舉例: 1120的長度, 你要用16進制分辨表示每一個 就是31 31 32 30.
last-chunk = 1*("0") [ chunk-extension ] CRLF 這里說明最后一個chunk長度0, 也就是沒有資料。你收到的將是30 0d 0a。
trailer 是附件的資訊頭
chunk-extension 是通信協商的東西。
要詳細的你就google吧。我的httpserver沒實作這個的支持
uj5u.com熱心網友回復:
非常感謝你的解釋,我有點明白了,但仍然有一些細節待落實,比如:
1. [ chunk-extension ],這個你說的是“通信協商”的東西,這個怎么理解,還有為什么這里帶中括號?
chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] ) ,完全不明白=后面的是在表達什么意思?
2. chunk-size = 1*HEX,這個表示chunk包的大小,但是前面的"1*"是什么意思,是術語的格式嗎,是什么意思?
3. chunk-ext-val = token | quoted-string
chunk-data = chunk-size(OCTET)
trailer = *(entity-header CRLF)
這三項也不明白是什么意思。
uj5u.com熱心網友回復:
octer是更嚴格的說明,表示8個bit,現在計算機一個byte 都是8位元組的,所以就是byte吧。uj5u.com熱心網友回復:
chunk-extension這個不一定有,要看具體情況。沒有了后面幾個就不用考慮了。chunk-data 實際上就比你進行chunk編碼的陣列內容。長度就是chunk-size。octer樓上給你解釋了。
chunk-size 意思是長度你要按16進制處理,Hex就是這個意思,最少1個,*無上限。
不過我上面的例子寫錯了,比如某個chunk你要從編碼陣列中發送18(10進制)個位元組,那么按16進制發送就是12,所以你要將12用字符發送出去。1的ascii值是0x31,2是0x32. 所以發送的是0x31 0x32這兩個值。我上面忘記轉16進制了。
uj5u.com熱心網友回復:
《Http權威指南》?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/128935.html
標籤:基礎類
上一篇:USB通訊超時時間的設定
