http中採用塊傳遞方式的補充

2021-04-13 02:14:32 字數 943 閱讀 3965

在程式中由於如果是一般的情況下,那麼客戶端傳送過請求訊息之後,伺服器端返回的資訊頭中應該包括乙個字段叫做「

content-length

」 ,這個字段,在這個字段之後緊接著就是將要返回給客戶端的檔案的大小,我們只要將這個值捕獲,從伺服器端接收相應大小的檔案就可以了。但是

有時候,

web伺服器生成

是無法在

header

就確定訊息大小的,這時一般來說伺服器將不會提供

content-length

的頭資訊,而採用

chunked

編碼動態的提供

body

內容的長度

。 所以在程式中就無法獲得檔案的大小,

chunked

編碼的檔案的格式是:

採用若干個塊連線在一起,最後乙個塊的大小為

0 來決定塊的結束,也就是檔案的結束。具體的格式是 :

(資訊頭)

/r/n

165 [

塊大小,十六進製制表示

] /r/n

(塊的具體內容)

/r/n 0 [

塊的大小為

0,表示塊的結束

]/r/n

在程式中,將獲得的資訊頭進行分析,從以前的方式中如果獲得的檔案的大小為

0 的情況下,那麼就可以採用了塊的傳遞方式,再進一步判斷,如果在資訊頭中包含有

transfer-encoding

這個字段的話,就是採用了塊傳遞的方式。這時就從資訊頭後面乙個乙個字元的從伺服器端獲得返回字元。以

』/r』』/n』

作為迴圈的結束。把這個字串儲存在乙個動態陣列中。這個陣列中儲存的就是十六進製制的檔案的大小,將字串轉化成整數,返回給原來程式中用來儲存檔案大小的變數,利用

receive

就可以從伺服器端獲得制定大小的檔案了.  

node學習中HTTP知識的補充

現在很多同學在面試的前端的過程中肯定遇到很多面試官問http方面的問題,在我接觸的很多前端朋友在這方面都比較偏弱,在學習nodejs過程中難免要接觸這些東西。總體上分三大部 1 http客戶端傳送請求,建立埠。2 http伺服器在埠監聽客戶端請求 3 http伺服器向客戶端返回狀態碼和內容 我記得我...

觀察者模式中,訊息採用推和拉方式來傳遞的比較

觀察者模式,指的是定義一種物件間的一對多的關係,當乙個物件的狀態發生變化的時候,所有依賴於它的物件都將得到通知並更新自己。現在要說的分歧在這裡 推 的方式是指,subject維護乙份觀察者的列表,每當有更新發生,subject會把更新訊息主動推送到各個observer去。拉 的方式是指,各個obse...

觀察者模式中,訊息採用推和拉方式來傳遞的比較

觀察者模式,指的是定義一種物件間的一對多的關係,當乙個物件的狀態發生變化的時候,所有依賴於它的物件都將得到通知並更新自己。現在要說的分歧在這裡 推 的方式是指,subject維護乙份觀察者的列表,每當有更新發生,subject會把更新訊息主動推送到各個observer去。拉 的方式是指,各個obse...