鱼C论坛

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

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

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

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

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

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

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


                               
登录/注册后可看大图


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

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

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

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

  21.   Serial.println("Connecting ...");
  22.   int i = 0;
  23.   while(wifiMulti.run()!=WL_CONNECTED)
  24.   {
  25.     delay(1000);
  26.     Serial.print(i++);
  27.     }
  28.    
  29. //wifi连接成功后将通过串口监视器输出连接成功信息
  30.   Serial.println('\n');
  31.   Serial.print("Connected to ");
  32.   Serial.println(WiFi.SSID());
  33.   Serial.print("IP address:\t");
  34.   Serial.println(WiFi.localIP());

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

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

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

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

  50. void handleNotFound()
  51. {
  52.   esp8266_server.send(404,"text/plain","404:Not found");
  53.   }
复制代码



                               
登录/注册后可看大图


串口监视器结果如下:
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-5-9 19:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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