linux c使用socket进行http 通信,并接收任意大小的http响应(一)

  • Post author:
  • Post category:linux

如何进行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请求头中的很多属性其实都是可选项,所以我们可以选择一些我们自己需要的属性发送就好。

 

转载于:https://www.cnblogs.com/thegodofthunder/p/7216065.html