7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(TCP实现HTTP访问下载文件,明白底层如何实现的,地基稳才踏实)
看了好多文章.....唉,还是自己亲自动手用网络监控软件测试吧
先看这个节安装WEB服务器.....安装好以后就可以用HTTP访问电脑文件了
6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP) 事先不知道HTTP,最后先看这个
其实HTTP就是建立在TCP通信上,然后自己又封装了一套协议罢了,不过协议也不算多,协议内容都是用字符串发送的,也好理解
感觉要比我以前自己用TCP实现MQTT协议简单多了,MQTT规定的协议就是复杂点,全部用16进制组合......麻烦死了...
https://www.cnblogs.com/yangfengwu/p/9124299.html
大家学了这个文章,只要自己的模块支持TCP,那么就可以实现用HTTP访问下载文件,
废话少说,我就下载我自己云端的这个文件

https://blog.csdn.net/runner_diego/article/details/51379116 (这个是我在网上找的介绍http协议的)
启动个TCP客户端
连接的ip地址选择自己的哈 我测试用的是 47.92.31.46 端口号80
GET /hardware/wifi1/updata1.lua HTTP/1.1 Host: 47.92.31.46
先看get的用法
GET,一个空格,访问文件的路径,一个空格,用哪个版本的HTTP协议
Host,冒号,一个空格,访问的地址


然后咱看看发送和具体接收的数据
:: 发送数据:GET /hardware/wifi1/updata1.lua HTTP/1.1
Host: 47.92.31.46
[1次]
:: 收到数据:HTTP/ OK
Date: Mon, Apr :: GMT
Server: Apache/ (Win64)
Last-Modified: Sat, Apr :: GMT
ETag: "7ac-586f82b4b7b40"
Accept-Ranges: bytes
Content-Length:
local model = "wifi1" --product model
--[[Do not update the following program !!!!]]
local version1 = "0.0.0";
local version2 = "1.0.0";
if file.open("version2.lua", "r") then--local
version2 = file.read()
file.close();
end
print("local version:"..version2)
local JsonTable = {};
function UpdataFun(client, topic, data,jsondata)
if jsondata["version"] ~= nil and jsondata["url"] ~= nil then
if jsondata["version"] ~= version2 then
version1 = jsondata["version"]
JsonTable["data"] = "updata";
JsonTable["status"] = "unlike";
JsonTable["version"] = version2;
if file.open("url.lua", "w+") then
file.write((jsondata["url"]))
file.close()
end
print(jsondata["version"],jsondata["url"])
else
JsonTable["data"] = "updata";
JsonTable["status"] = "alike";
JsonTable["version"] = version2;
end
client:publish(PublishTopic,sjson.encode(JsonTable), , , function(client) end)
JsonTable = {}
elseif jsondata["cmd"] ~= nil and jsondata["cmd"] == "start" then
if file.open("version1.lua", "w+") then
file.write(version1)
file.close()
end
JsonTable["data"] = "updata";
JsonTable["status"] = "start";
print(data)
client:publish(PublishTopic,sjson.encode(JsonTable), , , function(client) node.restart(); end)
JsonTable = {}
elseif jsondata["cmd"] ~= nil and jsondata["cmd"] == "model" then
JsonTable["data"] = "updata";
JsonTable["status"] = "model";
JsonTable["model"] = model;
print(data)
client:publish(PublishTopic,sjson.encode(JsonTable), , , function(client) end)
JsonTable = {}
end
end



其实就这么简单就可以用HTTP访问下载文件了 .....您自己百度看看别人写的...唉,都抓不住咱真正要的需求,估计那些人只是搞上位机出身,只知道是那么用
,不知道考虑咱单片机硬件到底如何访问......
7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(TCP实现HTTP访问下载文件,明白底层如何实现的,地基稳才踏实)的更多相关文章
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(视频总揽)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽) https://v.youku.com/v_show/id_XNDE0Njk3Njg2OA==. ...
- 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽)
我的这个升级篇的代码适用于自己所有的带WIFI和GPRS模块的开发板,升级功能实质上是通过MQTT把数据发给WIFI和GPRS模块,然后模块进行保存和运行. 这个升级程序是当时自己花了两个星期的时间写 ...
- 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇-优化升级(安装Apache (Web服务器)软件,测试HTTP)
为了和SDK升级保持协议一致,花了两天时间实现了用LUA开发,MQTT+HTTP方式实现远程升级 安装Apache主要是为了实现通过HTTP下载资源 升级介绍: 0,用户点击检查更新时,APP首先通过 ...
- 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(HTTP介绍,TCP实现HTTP下载文件)
https://www.cnblogs.com/yangfengwu/p/10357564.html 看了好多文章.....唉,还是自己亲自动手用网络监控软件测试吧 先看这个节安装WEB服务器.... ...
- 5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(,远程升级GPRS内部程序)
https://www.cnblogs.com/yangfengwu/p/10410202.html 与升级WIFI相同介绍的不再叙述 先看WIFI升级的: ↑ 演示视频: https://www. ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)
https://www.cnblogs.com/yangfengwu/p/10360618.html 演示视频: https://www.bilibili.com/video/av54894356/ ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)
3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...
- 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP)
2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据) 因为安全连接是和域名绑在一块的,所以需要申请域名 有没有不知道域名是什么的, ...
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据) 因为那个软件只能监听咱自己电脑上的数据,所以咱就用电 ...
随机推荐
- ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树,倍增lca)
https://nanti.jisuanke.com/t/31462 要求在一个矩形中任意选两个点都有唯一的通路,所以不会建多余的墙. 要求满足上述情况下,建墙的费用最小.理解题意后容易想到首先假设全 ...
- error C4430: error 2141
c:\evan\workspace\1\1\netwowkippack.h(50) : error C2146: 语法错误 : 缺少“;”(在标识符“nSourPort”的前面) c:\evan\wo ...
- idea的maven项目不知道为啥下载不下来jar包,看本地仓库只是下载了一下xml文件,没有jar包问题
确认了私服上的jar包能直接下载下来,而且jar包是正常的:但是就是不能通过idea下载,通过idea下载到本地仓库的只生成了.lastUpdated文件,检查了setting.xml文件.网络,私服 ...
- C++编译器详解(三)函数调用的区别:_cdecl以及_stdcall
1._stdcall是Pascal程序的缺省调用方式,通常用于Win32 API中,函数采用从右到左的压栈方式,自己在退出时清空堆栈.VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上&qu ...
- ★ prototype、__proto__ 详解
# var Person = function(name) { this.name = name; } var p = new Person(); //new操作符的操作是 var p = {} p. ...
- winSockets编程(三)最简单的C/S形式
功能:向服务器端发送一个字符串,属于最简易的形式,一共需要4个主要步骤,初始化-建立套接字-连接服务器-发送数据 /****************************************** ...
- VS2008 + QGIS1.7.1试验
今天试验了一下.结果算是成功了吧.显示Generate done,生成了.但是提示了一个“SVN version不明确”的错误提示,应该无大碍吧.但是打开Build成的.sln也没看出有啥不妥. 用C ...
- hibernate之helloword(环境搭建)
环境搭建 hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- Monkey and Banana (hdu 1069)
http://acm.hdu.edu.cn/showproblem.php?pid=1069 题目描述: 给你n个箱子, 给你箱子的长宽高,箱子是可以无限使用的,问这些箱子摞起来最多能多高? 这些 ...
- noip第18课作业
1. 银行取款 [题目描述] 在现代文明社会中,大家在诸如银行办理业务.车站买票等活动时都很文明没有插队的现象,本着“先来先服务”的规矩. 新年马上到了,明明的爸爸打算上银行去取点钱,带着一向表现很好 ...