HTTP Response中的Chunked編碼

2021-08-22 07:34:34 字數 983 閱讀 9714

進行chunked編碼傳輸的http response會在訊息頭部設定:

transfer-encoding: chunked

表示content body將用chunked編碼傳輸內容。

chunked編碼使用若干個chunk串連而成,由乙個標明長度為0的chunk標示結束。每個chunk分為頭部和正文兩部分,頭部內容指定下一段正文的字元總數(十六進製制的數字)和數量單位(一般不寫),正文部分就是指定長度的實際內容,兩部分之間用回車換行(crlf)隔開。在最後乙個長度為0的chunk中的內容是稱為footer的內容,是一些附加的header資訊(通常可以直接忽略)。具體的chunk編碼格式如下:

chunked-body = *chunk

"0" crlf

footer

crlf

chunk = chunk-size [ chunk-ext ] crlf

chunk-data crlf

hex-no-zero =

chunk-size = hex-no-zero *hex

chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-value ] )

chunk-ext-name = token

chunk-ext-val = token | quoted-string

chunk-data = chunk-size(octet)

footer = *entity-header

最後提供一段php版本的chunked解碼**:

$chunk_size

=(integer)hexdec(fgets( $socket_fd,

4096

) );

while(

!feof($socket_fd)

&&$chunk_size

>0)

HttpResponse的使用方法

httprequest類是乙個封閉http提交資訊的型別,而封閉http輸出資訊的型別就是httpresponse類,使用httpresponse類可以實現三種型別的輸出,即文字,url,二進位製流.實現這三類的屬性和方法分別介紹如下 1.文字的輸出,在日常開發中,後台中的文字可能需要輸出到瀏覽器中...

C 中的long與C 中的long

微軟很厲害,c 是非常優秀的計算機語言,c 比c 還厲害,c c 本身不就包含四個 號嗎?而微軟發明了c c 中的long比c 中的long要long兩倍!不信你看 我正在使用.net寫乙個預約排隊的程式,因為一前通過vc編寫了乙個用於顯示登記資訊的控制項,現在使用c 重新預約程式,則必然要呼叫vc...

c中的const與c 中的const

c中的const是乙個偽唯讀識別符號。include include int main 此時輸出a的值為20,被指標間接的改變了。c 中,const進行了增強,不在是乙個偽識別符號了。const int a 10 int p int a p 20 cout a p endl cout a endl ...