C语言网络编程(基于CC3200)

1、网络基本知识

  1. A类IP地址由1个字节的网络地址和3个字节主机地址组成,网络地址最高位为“0”,即第一段数字范围为1~127,每个A类地址可连接16387064台主机,lnternet有126个A类地址。

       

2、HTTP/1.1协议中HTTP请求方法

  1.         OPTIONS
  2.         GET                             数据获取。处理流程:当服务器获取请求后,首先检查请求的资源URN,然后检查请求的资源在串行闪存中是否存在,如果存在则将请求资源作为HTTP响应的一部分返回客户端;若不存在,则服务器检查请求的资源是否是ROM中内部网页文件,如果是则返回,如果不是则发送HTTP错误信息“HTTP/1.0 404 Not Found”
  3.         HEAD
  4.         POST                           更新服务器中数据。处理流程:服务器支持内容类型为application/x-www-form-urlencoded的HTML表单,由浏览器发送的POST信息包含表单操作名和参数表,参数表包含一或多对变量名和变量值。当接收到POST请求时,首先通过表单操作名检查POST是否需要内部处理,然后检查参数表,逐个检查参数表中的变量名是否与预定义标记匹配,如果匹配则对变量值进行处理。POST操作分两种:简单操作和复杂操作。简单操作:服务器不检查操作值,只对操作表进行处理,并保存新的信息(如设置域名)。复杂操作:服务器通过操作值对操作进行识别,并收集所有必要的POST参数,然后进行特定的操作(如添加操作文件)。
  5.         PUT
  6.         DELETE
  7.         TRACE
  8.         CONNECT

3、HTTP中四种常见的POST提交数据的方式

       协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。

       但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。例如:

//http的post数据格式
char g_cPostData[] = "POST /v1.1/device/%d/sensor/%d/datapoints  HTTP\/1.1\r\n"
                                   "Host:api.yeelink.net\r\n"
                                   "Accept: *\/\* \r\n"
                                   "U-ApiKey: %s \r\n"
                                   "Content-Length: %d \r\n"
                                   "Content-Type: application/json;charset=utf-8\r\n"
                                   "Connection: close\r\n"
                                   "\r\n"
                                   "%s";

1、application/x-www-form-urlencoded

                浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

            2、multipart/form-data

                 这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

            3、application/json

                用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。这种方案,可以方便的提交复杂的结构化数据,特别适合 RESTful 的接口。各大抓包工具如 Chrome 自带的开发者工具、Firebug、Fiddler,都会以树形结构展示 JSON 数据,非常友好。但也有些服务端语言还没有支持这种方式,例如 php 就无法通过 $_POST 对象从上面的请求中获得内容。这时候,需要自己动手处理下:在请求头中 Content-Type 为 application/json 时,从 php://input 里获得原始输入流,再 json_decode 成对象。

            4、text/xml

4、charset=utf-8

        charset:是数据包的一个属性,用来指定字符编码类型

        utf-8:编码标准,英文字符集,包含了zhon中文的编码格式

猜你喜欢

转载自blog.csdn.net/qq_39815222/article/details/81571158
今日推荐