ESP8266网络服务器的使用
在之前的文章中,曾经编写过两个ESP8266的通信,但对于其背后的原理和调用的库并不熟悉,因此本文章来恶补一下这方面内容。按照惯例,首先介绍一些有关ESP8266网络服务器的库、类以及方法,接着通过几个示例更好理解这些库的作用。

ESP8266WiFi 库
ESP8266WiFi 库主要用于管理 WiFi 连接和网络通信。它能够提供包括 WiFi 连接、TCP/UDP 通信等功能。以下对其重要类和方法解析。
① WiFiClass
用于管理 WiFi 连接。ESP8266WiFi库中为其配置了WiFiClass类的实例实例对象WiFi,因此通常在程序中,我们无需再专门为其创建一个对象,这方便了我们的程序开发效率。
重要方法:
begin(const char* ssid, const char* password): 连接到指定的 WiFi 网络status(): 返回当前 WiFi 连接状态(如 WL_CONNECTED)localIP(): 获取 ESP8266 的本地 IP 地址softAP(const char* ssid, const char* password): 将 ESP8266 设置为 AP 模式(默认为STP模式)disconnect(): 断开当前 WiFi 连接mode(WiFiMode_t mode): 设置WiFi模式,参数mode的值可以是WIFI_STA 、 WIFI_AP 、 WIFI_AP_STA 、 WIFI_OFF 四种
② WiFiClient
用于创建 TCP 客户端,与服务器通信,通常需要手动创建。
重要方法:
connect(const char* host, uint16_t port): 连接到指定的服务器。print() / println(): 向服务器发送数据。available(): 检查是否有数据可读。read(): 读取接收到的数据。stop(): 关闭连接。
③ WiFiServer
用于创建 TCP 服务器,监听客户端连接,通常需要手动创建。
重要方法:
begin(): 启动服务器。available(): 检查是否有客户端连接。client(): 获取连接的客户端对象。
④ WiFiUDP
用于实现 UDP 通信,通常需要手动创建。
重要方法:
begin(uint16_t port): 启动 UDP 服务并监听指定端口。beginPacket(IPAddress ip, uint16_t port): 开始发送 UDP 数据包。write(): 发送数据。endPacket(): 结束数据包发送。parsePacket(): 检查是否有 UDP 数据包到达。read(): 读取接收到的 UDP 数据。remoteIP(): 获取发送方的IP地址,返回一个 IPAddress 对象。remotePort(): 获取发送方的端口号,返回一个 IPAddress 对象。
ESP8266WiFiMulti 库
ESP8266WiFiMulti 库是 ESP8266WiFi 库的扩展,用于管理多个 WiFi 网络。它可以自动尝试连接预配置的多个 WiFi 网络,直到成功连接其中一个。
① WiFiMulti
用于管理多个 WiFi 网络,通常创建一个对象即可。
重要方法:
addAP(const char* ssid, const char* password): 添加一个 WiFi 网络到列表中。run(): 尝试连接列表中的 WiFi 网络,返回连接状态。cleanAPlist(): 清除所有已配置的 WiFi 网络。
ESP8266WebServer 库
ESP8266WebServer 库用于在 ESP8266 上创建简单的 HTTP 服务器,处理客户端请求并返回响应。适用于构建 Web 控制界面或 RESTful API。
① ESP8266WebServer
用于创建 HTTP 服务器。
重要方法:
begin(): 启动服务器。handleClient(): 处理客户端请求。on(const char* uri, HTTPMethod method, THandlerFunction handler): 注册路由和处理函数。send(): 向客户端发送响应(如 send(200, “text/plain”, “Hello World”))。arg():获取客户端请求中的参数值。hasArg(): 检查请求中是否包含某个参数。uri(): 获取客户端请求的资源,返回所请求的资源名称streamFile(File &file, const String& contentType): 将指定文件内容以流的形式发送给客户端
网络服务器实例
在浏览器中控制ESP8266指示灯
#include <ESP8266WiFi.h> // 导入ESP8266WiFi库
#include <ESP8266WiFiMulti.h> // 导入ESP8266WiFiMulti库
#include <ESP8266WebServer.h> // 导入ESP8266WebServer库
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象wifiMulti
ESP8266WebServer esp8266_server(80);// 建立网络服务器对象,该对象用于响应HTTP请求。监听端口
void setup(void){
Serial.begin(9600); // 启动串口通讯
pinMode(LED_BUILTIN, OUTPUT); //设置内置LED引脚为输出模式以便控制LED

最低0.47元/天 解锁文章
1522

被折叠的 条评论
为什么被折叠?



