划句顾 发表于 2021-8-12 00:15:35

ESP8266:建立基本网络服务器

本帖最后由 划句顾 于 2021-8-12 00:15 编辑

ESP8266-NodeMCU只能实现一些基本的网络服务功能

static/image/hrline/5.gif

代码如下:
/***************************************
* purpose :使用NodeMCU建立基本服务器。用户可通过浏览器使用8266的IP地址
*          访问8266所建立的基本网页
* author:LAOGU
* time    :2021/8/11
*/
#include<ESP8266WiFi.h>
#include<ESP8266WiFiMulti.h>
#include<ESP8266WebServer.h>//ESP8266WebServer库

ESP8266WiFiMulti wifiMulti;//建立ESP8266WiFiMulti对象,对象名称是‘wifiMulti’

ESP8266WebServer esp8266_server(80);//建立ESP8266WebServer对象,对象名称为esp8266_server
                                    //括号中的数字是网络服务器相应http请求的端口号
                                    //网络服务器标准http端口号为80
                                    
void setup()
{
Serial.begin(9600);   //启动串口通讯

//通过addAP函数存储 WiFi名称   WiFi密码
wifiMulti.addAP("八嘎","123456789");
wifiMulti.addAP("胶几人","11223344");

Serial.println("Connecting ...");
int i = 0;
while(wifiMulti.run()!=WL_CONNECTED)
{
    delay(1000);
    Serial.print(i++);
    }
   
//wifi连接成功后将通过串口监视器输出连接成功信息
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());

// ”启动网络服务功能“ 代码如下:
esp8266_server.begin();//启动网络服务器
esp8266_server.on("/",handleRoot);//handleRoot为网络服务函数,handle是处理的意思,root是根
                                    //访问网站首页
esp8266_server.onNotFound(handleNotFound);

// 告知用户网络服务功能已经启动
   Serial.println("HTTP esp8266_server started");
}

void loop() {
esp8266_server.handleClient(); // 一直处理http服务器访问,因为如果此时esp有其他的事情做,它是不会理会这些请求的
}

void handleRoot()
{
esp8266_server.send(200,"text/plain","Hello world from EPS8266");// plain 的意思是“纯的”,“text/plain” 即 “纯文本”
}

void handleNotFound()
{
esp8266_server.send(404,"text/plain","404:Not found");
}

static/image/hrline/5.gif

串口监视器结果如下:


static/image/hrline/5.gif
将192.168.31.144 (NodeMCU的IP地址)复制到浏览器中,网页跳转到如下图所示:



static/image/hrline/5.gif
在浏览器中看到“Hello from ESP8266”,说明我们已经成功的让NodeMCU实现了网络服务功能,因为现在我们所看到的这条文字信息正是来自于NodeMCU。换句话说,NodeMCU为我们建立了一个超级迷你的小网站。这个网站只有一个网页。这个网页只有一行文字“Hello from ESP8266”。


static/image/hrline/5.gif
①on函数:指挥NodeMCU来如何处理浏览器的http请求。
举个栗子:
在esp8266_server.on("/",handleRoot)中一共有两个参数,第一个参数是字符串“/”,第二个参数是handleRoot函数。
参数“/”:网站首页的名称是“/”,而我们在浏览器看到的“Hello world from EPS8266”这个页面是NodeMCU服务器中的网站首页。
参数“handleRoot”:主要作用是告诉NodeMCU改如何生成和发送网站首页给浏览器。
综上两个参数可知,语句esp8266_server.on("/",handleRoot)的作用就是告诉NodeMCU,当有浏览器请求网站首页时,请执行handleRoot函数来生成网站首页内容然后发送给浏览器。

②onNotFound函数:指挥NodeMCU在收到无法满足的http请求是应该如何处理。
举个栗子:
语句esp8266_server.send(404,"text/plain","404:Not found")中调用了ESP8266WebServer库中的send函数,send函数作用是生成并发送http响应的信息。

深谙流年 发表于 2021-8-12 00:17:19

{:10_275:}
页: [1]
查看完整版本: ESP8266:建立基本网络服务器