嵌入式设备进行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开发流程相关推荐

  1. linux 嵌入式 远程升级,嵌入式设备远程固件升级方法与流程

    本发明属于远程固件更新 技术领域: ,特别是一种基于STM32F407单片机的靶场测试数据采集设备的远程固件升级方法. 背景技术: :固件(firmware)一般存储于设备中的电可擦除只读存储器EEP ...

  2. 嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值

    前言 本文章介绍了在linux系统下,如何修改usb驱动支持移远模块,移远模块正常启动后,通过USB连接到linux设备上,驱动正常加载后会在/dev/下产ttyUSB*设备. 一.USB串口驱动 1 ...

  3. esp32语音控制_乐鑫发布针对物联网嵌入式设备AI语音麦克风阵列开发板

    乐鑫信息科技(股票代码:688018)发布 AI 语音麦克风阵列开发板 ESP32-Korvo .这是一款针对物联网嵌入式设备的 AI 语音开发板,基于乐鑫的旗舰芯片 ESP32,搭载多麦克风阵列,能 ...

  4. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍

    文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...

  5. 嵌入式linux的开发流程

    嵌入式linux开发流程: 1.搭建前期的开发环境,例如搭建linux主机环境,交叉编译器的安装,还有一些常用的开发辅助软件如source insight等等. 2.学习对硬件的直接操作,这里和单片机 ...

  6. 嵌入式驱动开发流程示例(简单的说就是写好驱动,编译,挂载)

    1.在drivers/char/目录下建立一个first_driver_hello.c文件 文件的内容如下 /************************************* NAME:fi ...

  7. 【转】嵌入式产品开发流程

     嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程.但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处.它包含嵌入 ...

  8. 从需求到设计,嵌入式产品开发流程

    嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程.但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处.它包含嵌入式 ...

  9. linux嵌入式开发流程,听听牛人怎么说

    很多学习嵌入式的人来说,都会学习嵌入式linux开发,在学习的过程中,总会有很多难题,相对而言,嵌入式linux也算是嵌入式学习中比较难的,那如何可以攻破这个难点,那么我们就需要从根本入手,学习嵌入式 ...

最新文章

  1. 求抛物线和直线交点_直线与抛物线唯一公共点的深入理解
  2. matplotlib各个部分
  3. 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
  4. 【Transformer】CrossFormer:A versatile vision transformer based on cross-scale attention
  5. Generalised Dice Overlap as a Deep Learning Loss Function for Highly Unbalanced Segmentations
  6. 1019 数字黑洞 (20)
  7. 吉米多维奇例题——(7)
  8. 基于皮尔森相关系数的协同过滤算法
  9. 《跟任何人都聊得来》读书笔记
  10. ADS1115 STM32 HAL库驱动 CubeMX
  11. 音乐迷(无损音乐下载器)
  12. 2017年PHP程序员未来路在何方——韩天峰
  13. 不忘历史、维护中国海权
  14. 服务器连接异常系统无法登录,Win10系统电脑无法登录LOL提示服务器连接异常的原因及解决方法...
  15. SAP中寄售结算税码取值问题分析
  16. 【NVMe】NVMe 1.3协议中文翻译——第一章简介
  17. Visual Assist 使用小结
  18. ASCII码作用简介
  19. 【云计算】弹性公网IP
  20. 掌握农业信息化核心 物联网助力智慧农业

热门文章

  1. 房地产行业唯美大气工作总结汇报PPT模板
  2. python人口数字预测_Python数据分析之全球人口数据
  3. Golang中获取中文字符串的子串字符位置及截取子串
  4. 拯救剪辑师,这款转码神器让专业制作提速增效!
  5. MOOC网神经网络与深度学习TensorFlow实践3——数字图像处理、TensorFlow基础
  6. 2018杭州人才引进办理指引
  7. vue webtrc 浏览器录屏
  8. Leetcode69-Sqrt(x)
  9. LeetCode:69.Sqrt
  10. 190410-4步利用EndNote批量下载参考文献及施引文献