linux c使用socket進行http 通信,並接收任意大小的http響應(一)


如何進行http通信呢?我們打開任意一個瀏覽器,按F12,再選擇網絡,然后打開任意一個網站,我們就可以看到瀏覽器和網站通信的過程

如下圖:

然后,我們任意點擊一條記錄,可以看到

然后,查找http協議有關資料,並且進行分析,我們可以發現,http通信實際上是瀏覽器按照http請求格式發送給服務器信息,然后服務器再將被請求的信息以http響應格式發送回瀏覽器。

一次類推,我們使用socket發送http請求信息給http服務器,服務器頁同樣會以相應的格式發送響應給socket。這樣,我們就可以從socket接收http響應。

從火狐瀏覽器復制的頭部信息為

Host: sp0.baidu.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=linux%20%E6%88%AA%E5%9B%BE&rsv_pq=874a038000045fed&rsv_t=8169R4N5BEbAO%2BnEjrUiieZLucnJXLQyte%2B4YBtAfSh5K1k8oQM9Ha8vYQM&rqlang=cn&rsv_enter=1&rsv_sug3=13&rsv_sug1=13&rsv_sug7=100&rsv_sug2=0&inputT=3665&rsv_sug4=3666
Cookie: BAIDUID=6DF6B81DE1E3807DBB17080F81FFD375:FG=1; BIDUPSID=6DF6B81DE1E3807DBB17080F81FFD375; PSTM=1498552913; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1464_21120_17001_20930; PSINO=6
Connection: keep-alive

更多的還是查找http協議的有關資料吧。

另外提示,http請求頭中的很多屬性其實都是可選項,所以我們可以選擇一些我們自己需要的屬性發送就好。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM