嵌入式设备进行http socket开发流程

2019-07-12 17:15发布

嵌入式设备进行http socket开发流程  

最近接触了一个http开发的项目,在这里记录一下主要流程。     下位机:arm linux
    上位机:pc web服务器     这里在与web服务器通信时,没有使用第三方开源库工具,而是直接使用socket通信模拟http协议通信,大致思路如下:     1 、对域名解析,将www.xxxx.com之类的网址解析为ip地址,端口没有说明的话,默认80     2、使用socket链接指定ip和端口     3、模拟http协议格式发送数据,和接收数据处理    
    这里最为繁琐的是第三步调试,http是一个纯文本协议,需要注意对空格、换行符等不可见字符特别注意。为了安全起见,这里推荐两个工具,用于调试http协议和分析http原始数据(wireshark抓包软件,和firefox浏览器的httprequest插件),这两个工具很实用。这里wireshark抓包软件,只要是接触网络的同事都知道,我就不说了,http request插件给大家一个切图:

http trap上传文件调试:

http trap 文件上传基本格式: POST /upload_file/UploadFile HTTP/1.1 Accept: text/plain, */* Accept-Language: zh-cn Host: 192.168.29.65:80 Content-Type:multipart/form-data;boundary=---------------------------7d33a816d302b6
User-Agent: Mozilla/4.0 (compatible; OpenOffice.org) Content-Length: 424
Connection: Keep-Alive   -----------------------------7d33a816d302b6 消息1 -----------------------------7d33a816d302b6 消息2 -----------------------------7d33a816d302b6 消息3
-----------------------------7d33a816d302b6--
同样先找合适的调试工具,这里以linux 端的curl指令,结合实际的项目为例: # curl -F 'param={"category":18,"lng":"113.365336","lat":"23.105214","safecode":"A16F0D4D5FC085B4","sspusernum":"356869075000328","type":1,"data_type":1,"gather_time":"2017-05-02 15:44:38","clientid":"20170502154438","car_num":"鄂A5536","region_id":"430102"}' -F 'picture1=@/mnt/hgfs/share/cifs/1.jpg' -F 'video1=@/mnt/hgfs/share/cifs/1.mp4' http://mtest.yitopapp.com/ssposs-service/yitopssp/saveoffertwoother 同时使用wireshark 抓包获取数据包格式,然后按照该格式模仿数据发送。
在模仿数据格式时,我这里需要特别提醒一处,我就这这里被坑。 这里图片是post消息指令,和大家需要说明的boundary在这里是声明,假设boundary赋值为x 这里有两处boundary属于使用,前面boundary声明假设boundary赋值为x,使用时的表达式:--x,一定要记住使用时比声明多了两个--符号,我就是大意没有发现这个,调试了好久 这里有一个boundary,这里表示结束。前面boundary声明假设boundary赋值为x,结束时的表达式:--x--