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

  • 相关阅读:
    对象存储、块存储、文件系统存储概念与区别
    一款线程安全、基本功能齐全的STL
    Libevent源码分析—event_base_dispatch()
    Libevent源码分析—event_add()
    Libevent源码分析—从使用Libevent库开始
    Libevent源码分析—event_set()
    Libevent源码分析—event_init()
    利用Elasticsearch搭建全球域名解析记录
    Mysql Order By注入总结
    解决在ubuntu下requests 无法找到模块packages
  • 原文地址:https://www.cnblogs.com/thegodofthunder/p/7216065.html
Copyright © 2020-2023  润新知