鱼C论坛

 找回密码
 立即注册
查看: 2773|回复: 1

[其他分类] ESP8266:建立基本网络服务器

[复制链接]
发表于 2021-8-12 00:15:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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


                               
登录/注册后可看大图


代码如下:
/***************************************
 * 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");
  }


                               
登录/注册后可看大图


串口监视器结果如下:
1628695144(1).png


                               
登录/注册后可看大图

  将192.168.31.144 (NodeMCU的IP地址)复制到浏览器中,网页跳转到如下图所示:
屏幕截图(230).png



                               
登录/注册后可看大图

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



                               
登录/注册后可看大图

①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响应的信息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 00:17:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 23:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表