有關使用HTTP協議傳輸二進位制檔案

2021-09-08 13:15:42 字數 876 閱讀 2378

http協議是基於字元(ascii)的,當content-type項為text/xml,則內容是文字格式;當二進位制格式時,content-type項為image/gif,就是了。例如,瀏覽器請求一張的資料報資訊:

1、請求訊息:

2、響應訊息:

下面是二進位制的資料區

由上可知,http協議中content中可以是純二進位制的。

通常上的理解,http協議中請求、相應都是以ascii字元方式傳輸,如果要傳輸二進位制需要經過base64或mime等編碼(因為http協議pop3、smtp郵件協議都是針對文字的,而ftp支援傳輸二進位制資料,即不需要經過編碼轉換成字元型資料)

如果直接使用http傳輸二進位制(不經過base64編碼),可能會造成一下問題:

1) 不知道傳輸位元組的具體長度,如傳輸的int型別,將int型別之間轉為char以後,丟失掉了長度的資訊,如數字1234567,本來只有4個位元組,但是轉化成文字的「1234567」是有7個位元組。在int型別的時候固然好辦,但是乙個陣列的時候,經過轉化以後,在轉化回來就很麻煩了。

2) 對於一些數字,二進位制傳輸server是沒法處理的。如int 1,二進位制資料是0x00000001,按位元組傳輸的時候,client能夠正常傳送,但是libevent收到以後,在拋給libevent_http層是,會把資料截斷,前兩位0x00是字串的停止符。

有關使用HTTP協議傳輸二進位制檔案

從第一次接觸http協議的時候,不知是怎麼回事,形成了這麼乙個錯誤的觀點,認為http協議是個純ascii字元協議。關於http傳輸ascii文字內容的過程相信大家都應該容易理解,因為http請求頭和響應頭都是以ascii文字方式傳輸的。而對於http傳輸二進位製流的相關細節,其實沒有我想象中的那麼...

scp選擇二進位制 二進位制傳輸和文字傳輸的區別

ascii方式和binary方式的區別是回車換行的處理 binary方式不對資料執行任何處理 ascii方式將回車換行轉換為本機的回車字元,比如unix下是 n,windows下是 r n,mac下是 r ascii方式下會轉換檔案,不一樣的系統有不一樣的行完畢符,假設你的檔案就是unix下的文字檔...

二進位制有關問題

有1000瓶液體,味,外表完全 樣,其中 瓶是毒藥,有10 條警 警 喝過毒藥後兩 時後死亡。問,如何在兩個 時後確定 哪瓶是毒藥 解法 因為有1000瓶液體。10條警犬。分別給這1000瓶液體編號,為 1 10000 用二進位制表示 10位就夠了。因為2 10 1024 給這10只警犬分別編號 1...