嵌入式设备进行http socket开发流程
嵌入式设备进行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--
嵌入式设备进行http socket开发流程相关推荐
- linux 嵌入式 远程升级,嵌入式设备远程固件升级方法与流程
本发明属于远程固件更新 技术领域: ,特别是一种基于STM32F407单片机的靶场测试数据采集设备的远程固件升级方法. 背景技术: :固件(firmware)一般存储于设备中的电可擦除只读存储器EEP ...
- 嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值
前言 本文章介绍了在linux系统下,如何修改usb驱动支持移远模块,移远模块正常启动后,通过USB连接到linux设备上,驱动正常加载后会在/dev/下产ttyUSB*设备. 一.USB串口驱动 1 ...
- esp32语音控制_乐鑫发布针对物联网嵌入式设备AI语音麦克风阵列开发板
乐鑫信息科技(股票代码:688018)发布 AI 语音麦克风阵列开发板 ESP32-Korvo .这是一款针对物联网嵌入式设备的 AI 语音开发板,基于乐鑫的旗舰芯片 ESP32,搭载多麦克风阵列,能 ...
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍
文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...
- 嵌入式linux的开发流程
嵌入式linux开发流程: 1.搭建前期的开发环境,例如搭建linux主机环境,交叉编译器的安装,还有一些常用的开发辅助软件如source insight等等. 2.学习对硬件的直接操作,这里和单片机 ...
- 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)
1.在drivers/char/目录下建立一个first_driver_hello.c文件 文件的内容如下 /************************************* NAME:fi ...
- 【转】嵌入式产品开发流程
嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程.但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处.它包含嵌入 ...
- 从需求到设计,嵌入式产品开发流程
嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程.但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处.它包含嵌入式 ...
- linux嵌入式开发流程,听听牛人怎么说
很多学习嵌入式的人来说,都会学习嵌入式linux开发,在学习的过程中,总会有很多难题,相对而言,嵌入式linux也算是嵌入式学习中比较难的,那如何可以攻破这个难点,那么我们就需要从根本入手,学习嵌入式 ...
最新文章
- 求抛物线和直线交点_直线与抛物线唯一公共点的深入理解
- matplotlib各个部分
- 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
- 【Transformer】CrossFormer:A versatile vision transformer based on cross-scale attention
- Generalised Dice Overlap as a Deep Learning Loss Function for Highly Unbalanced Segmentations
- 1019 数字黑洞 (20)
- 吉米多维奇例题——(7)
- 基于皮尔森相关系数的协同过滤算法
- 《跟任何人都聊得来》读书笔记
- ADS1115 STM32 HAL库驱动 CubeMX
- 音乐迷(无损音乐下载器)
- 2017年PHP程序员未来路在何方——韩天峰
- 不忘历史、维护中国海权
- 服务器连接异常系统无法登录,Win10系统电脑无法登录LOL提示服务器连接异常的原因及解决方法...
- SAP中寄售结算税码取值问题分析
- 【NVMe】NVMe 1.3协议中文翻译——第一章简介
- Visual Assist 使用小结
- ASCII码作用简介
- 【云计算】弹性公网IP
- 掌握农业信息化核心 物联网助力智慧农业