位置导航: ESP8266库 / WiFiServer库 / 本页
说明
本函数用于停止ESP8266开发板所建立的网络服务器。
注: close函数和stop函数功能相同。
语法
server.close()
参数
无
返回值
无
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
当您将以下示例程序中的WiFi连接信息修改并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,您将可以从串口监视器获取当前ESP8266开发板的IP地址。此时,ESP8266已经成功建立了网络服务器。您可以通过ESP8266的IP地址来访问该网络服务器。
假设您的ESP8266开发板IP地址是192.168.0.110。那么接下来您可以通过浏览器输入该IP地址。(如下图所示)
当您在浏览器地址栏中输入Ip后并按下回车,这时您将看到浏览器中显示上图所示的网页页面。该页面即是通过ESP8266所建立的。这时,如果您点击关灯链接3次后,ESP8266服务器将会关闭。我们是通过以下程序中的server.close()
来实现这一功能的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : WIFIServer_demo_3_close 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : Dapenson 日期/Date(YYYYMMDD) : 20200323 程序目的/Purpose : 此示例程序演示了如何使用WiFiServer库建立网络服务器。服务器将根据浏览器请求设置板载LED灯的状态; http://server_ip/gpio/0将设置 LED_BUILTIN 拉低,http://server_ip/gpio/1将设置 LED_BUILTIN 拉高 以上网址链接中的server_ip是ESP8266模块的IP地址,连接WiFi成功后将自动将ip打印在串口; 在浏览器点击“关闭LED”3次之后关闭tcp server服务器。我们是通过以下程序中的server.close()实现这一功能的。 ----------------------------------------------------------------------- 修订历史/Revision History 日期/Date 作者/Author 参考号/Ref 修订说明/Revision Description 20200413 CYNO朔 001 关灯链接点击3次关闭控制服务器 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> //设置您的wifi接入信息 #ifndef STASSID #define STASSID "taichimaker" #define STAPSK "12345678" #endif const char* ssid = STASSID; const char* password = STAPSK; //创建TCP server对象,并将端口指定为80 WiFiServer server(80); int server_stop_switch = 0 ; void setup() { //打开串口 Serial.begin(115200); //初始化板载LED pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, 0); //连接WiFi Serial.println(); Serial.println(); Serial.print(F("Connecting to ")); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(F(".")); } Serial.println(); Serial.println(F("WiFi connected")); //启动TCP server服务器 server.begin(); Serial.println(F("Server started")); //打印IP地址 Serial.println(WiFi.localIP()); } void loop() { //检查客户端是否已连接 WiFiClient client = server.available(); if (!client) { return; } Serial.println(F("new client")); client.setTimeout(5000); //默认为 1000 //读取客户端发起的TCP请求 String req = client.readStringUntil('\r'); Serial.println(F("request: ")); Serial.println(req); int val; //通过浏览器请求控制LED if (req.indexOf(F("/gpio/0")) != -1) { val = 0; } else if (req.indexOf(F("/gpio/1")) != -1) { val = 1; server_stop_switch++; } else { Serial.println(F("invalid request")); val = digitalRead(LED_BUILTIN); } //根据要求设置板载LED状态 digitalWrite(LED_BUILTIN, val); //读取剩余的内容,用于清除缓存 while (client.available()) { client.read(); } //将响应体发送到客户端 注:若要使用中文则必须在其中添加<meta charset=\"utf-8\">声明编码 client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n<meta charset=\"utf-8\">NodeMCU板载LED灯的状态 : ")); client.print((val) ? F("关") : F("开")); client.print(F("<br><br> <a href='http://")); client.print(WiFi.localIP()); client.print(F("/gpio/1'> 点击关灯(关灯3次后将会关闭服务器)</a> , 或 <a href='http://")); client.print(WiFi.localIP()); client.print(F("/gpio/0'> 点击开灯 </a> </html>")); //通过浏览器点击按钮之后,TCP连接将会被重置,并且浏览器会发起新的TCP请求到我们的8266服务器,从而去控制LED灯 Serial.println(F("Disconnecting from client")); // 如果 server_stop_switch >= 3 时则关闭TCP server if (server_stop_switch >= 3) { Serial.println(F("TCP server turn off ")); server.close(); } } |
相关内容
位置导航: ESP8266库 / WiFiServer库 / 本页