IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ESP8266 学习 八 ESP8266网络客户端基本操作 -> 正文阅读

[系统运维]ESP8266 学习 八 ESP8266网络客户端基本操作

ESP8266网络客户端基本操作

  • 在我们上网过程中,经常使用网页浏览器来浏览网站信息。在这一场景中,我们的网站浏览器就是一个网络客户端。网络客户端的主要功能就是向服务器发送网络请求。服务器在接收到客户端请求后会将请求的信息回复给客户端。
  • 在本节课程中,我们一起学习如何让ESP8266-NodeMCU开发板扮演网络客户端的角色,从而向网络服务器发送HTTP请求以获取服务器响应信息。
  • ---------------------------------------------可以回顾一下前面呢我们都是将 开发板当做服务器,电脑浏览器当做客户端,当客户端进行请求时服务器返回对应的响应给客户端
  • 在新章节里 我们的开发板通过互联网向服务器发送请求信息
    • 介绍开发板资源 :
    • 这两个库虽然功能相似,但是他们却是截然不同的两个库。ESP8266HTTPClient库相对简单易用。该库的库函数可以自动生成客户端请求信息并解析服务器响应信息。但正是由于该库的库函数为我们做了所有底层工作,这就导致该库不如WiFiclient库灵活。假如我们需要用ESP8266建立自定义客户端请求信息时,就要用WiFiClient库来实现了。另外WiFiClient库在解析服务器响应信息时可以使用丰富的STREAM类函数,这也为我们提供了很多便利。
    • 因此,在我们使用ESP8266开发项目时,更多的时候是使用WiFiClient库来实现物联网通讯功能。换句话说,我个人认为WiFiClient库的重要性和实用性要高于ESP8266HTTPClient库。
    • 以上描述有些抽象,接下来我们看两个简单示例。这两个示例的功能是相同的。都是通过ESP8266通过互联网向网络服务器发送请求并且将将网站服务器响应的信息输出在屏幕中。不同的是,示例一使用了ESP8266HTTPClient库来实现这一操作,示例二使用了WiFiClient库实现。
    • 我们先用示例一进行操作 可以发现编译不通过 此时需要我们进行如下操作 头文件下添加WiFiClient wifiClient,61行改为
    • httpClient.begin(wifiClient,URL);

    • 在成功编译上传之后,按下复位键就可以在串口监视器里看见请求头 与响应体的输出了 我们将响应体部分复制 粘贴到HTML编辑器里面就可以发现与我们用浏览器访问的结果一样

  • 关键代码分析
    • 头文件 http请求 http协议都在该头文件里对通过http协议对请求和响应进行解析

    • 通过宏定义的形式对URL进行规定 记得必须加上http://

    • 关键函数 通过该函数对开发版进行设置为无线终端模式、

  • 客户端实例二
    • 与一有所不同的是,换用了另一个通用库WiFiClient库在解析服务器响应信息时可以使用丰富的STREAM类函数。
    • 这部分逻辑判断语句中的判断条件是client.connect(host, httpPort)的返回值。ESP8266所实现的网络客户端是通过connect函数来实现与网络服务器的连接的。被连接的网络服务器网址为connect函数的第一个参数,即host。这里的第二个参数httpPort则是连接网络服务器的端口编号。关于host 和 httpPort的具体定义都在程序刚一开始的部分。
    • 重点2:获取网络服务器响应信息并且通过串口输出
    • 这里的 while (client.connected() || client.available())循环语句判断条件由两个函数的返回值来决定。
    • 第一个条件是 client.connected() 的返回值。connected()这个函数用于检查当前ESP8266与网络服务器的连接情况。如果连接状态为“真”,则返回真。否则返回“假”。
    • 第二个条件是 client.available()的返回值。available()函数用于检查网络客户端是否有接收到服务器发来的信息。如果有信息则返回真,否则返回“假”。
    • 利用以上两个条件进行“或”运算所得到的结果即是这里while循环语句的判断条件。换句话说,就是当ESP8266与服务器保持连接以及服务器有信息发送给ESP8266这两个条件满足一个,while循环语句体就会执行循环。当这两个条件都不满足了,则跳出循环。
    • 接下来我们看一下while循环的具体内容。这里我们使用了一个逻辑判断语句。判断条件再次出现了client.available()。
    • ------------------我们通过请求的形式进行客户端的访问其实根本是发送该请求进行客户端的访问

    • ------------------请求的内容 请求头与请求体之间是通过空行的形式进行分割 也就是最后的\r\n 因为该请求只有请求头和请求行所以请求体是没有的所以结尾是\r\n 无论是请求头还是请求体 响应头 还是响应体都是通过空格进行分割的 请求头包含请求和请求行

    • --------其次要点输出访问服务器的信息是也就是第一句函数进行请求服务器的内容,就可以在浏览器中显示如图 第三图第二句函数进行访问读取服务器响应信息

    • 因为服务器响应信息是如图所示 所以该函数就是读取响应信息直到\n 就停止

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:17:28  更:2022-10-08 21:21:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:29:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码