❶ 如何解決http封包中gzip編碼的html
如何解決http封包中gzip編碼的html
大家都知道,在默認模式下,http協議中發送的網頁的Html代碼是經過gzip編碼後傳送的。那麼我們怎麼才能回復這段編碼後的html呢?
大家可能都知道linux下有一個gzip命令。可以把文件壓縮成gzip編碼的格式,即*.gz
而對於文件的壓縮和解壓縮,可以採用zlib庫中提供的各種介面來進行操作。但是這里問題來了。關於gzip編碼的那些函數都帶有gz開頭的標示。而這些介面維護了一個名叫gz_stream的結構體。並且是針對文件FILE*操作的。
而我們要解決的問題是,我們把截取的封包中的gzip編碼的內容拿出來,放到一個buffer中。那麼怎麼才能針對這個buffer中的數據應用這些介面呢?
我本來的想法是能不能在這些介面中找到專門對內存中的數據進行解碼?
考慮這個問題,我看了這個庫的源代碼。後來放棄了。至於放棄的原因,可能是我意志力不夠,或者不想看那些源代碼了。總之,我看了一天,看的我頭疼。
後來我就想個辦法繞開這一思路,走個彎路。問題豁然開朗。
思路如下:
1. 把獲取到的經過編碼的數據保存到一個文件中。注意寫文件的時候一定要以二進制方式。否則是不能解碼的。
2. 應用zlib中的介面,gzopen(),gzread(),gzclose()即可完成解碼的任務了。
❷ linux怎麼調用html文件
基本的IO編程過程(包括網路IO和文件IO)是,打開文件描述符(windows是handler,Java是stream或channel),多路捕獲(Multiplexe,即select和poll和epoll)IO可讀寫的狀態