位置导航: ESP8266库 / WiFiServer库 / 本页
说明
此函数用于获取ESP8266服务器的工作状态。工作状态信息将以”状态值”形式返回。
如需了解具体状态信息内容,请参考本页面的返回值部分。
语法
server.status()
参数
无
返回值
服务器状态值(类型:uint8_t)。以下是状态值所对应的数值说明。
CLOSED = 0 (关闭连接)
LISTEN = 1 (监听)
SYN_SENT = 2
SYN_RCVD = 3
ESTABLISHED = 4 (建立连接)
FIN_WAIT_1 = 5
FIN_WAIT_2 = 6
CLOSE_WAIT = 7 (关闭连接等待)
CLOSING = 8 (关闭连接中)
LAST_ACK = 9
TIME_WAIT = 10
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
当您将以下示例程序中的WiFi连接信息修改并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,您将可以从串口监视器获取当前ESP8266开发板的IP地址。此时,ESP8266已经成功建立了网络服务器。您可以通过ESP8266的IP地址来访问该网络服务器。
假设您的ESP8266开发板IP地址是192.168.0.110。那么接下来您可以通过浏览器输入该IP地址。(如下图所示)
当您在浏览器地址栏中输入Ip后并按下回车,这时您将看到浏览器中显示上图所示的网页页面。该页面即是通过ESP8266所建立的。另外,您也可以通过串口监视器查看ESP8266服务器的工作状态。我们在以下程序中使用了server.status()
来获取这一信息。
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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : WIFIServer_demo_4 团队/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地址。 在程序运行中同时会将ESP8266的状态码通过串口监视器显示。我们使用了server.status来获取这一信息。 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : WIFIServer_demo_4 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : Dapenson 日期/Date(YYYYMMDD) : 20200323 程序目的/Purpose : 演示了如何使用TCP server设置一个类似http的简单服务器。 服务器将根据请求设置板载LED灯的状态 http://server_ip/gpio/0将设置 LED_BUILTIN 拉低, http://server_ip/gpio/1将设置 LED_BUILTIN 拉高 server_ip是ESP8266模块的IP地址,连接WiFi成功后将自动将ip打印在串口 同时打印server.status状态码 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: 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); 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")); //打印TCP server状态码 Serial.print(F("server.status :")); Serial.println(server.status()); //打印IP地址 Serial.println(WiFi.localIP()); } void loop() { //检查客户端是否已连接 WiFiClient client = server.available(); if (!client) { return; } Serial.println(F("new client")); client.setTimeout(5000); //默认为 1000 //打印TCP server状态码 Serial.print(F("server.status :")); Serial.println(server.status()); //读取客户端发起的TCP请求 String req = client.readStringUntil('\r'); Serial.println(F("request: ")); Serial.println(req); //解析请求里是否含有以下指定内容 int val; //检查发起的请求内容是否包含"/gpio/0" if (req.indexOf(F("/gpio/0")) != -1) { val = 0; //检查发起的请求内容是否包含"/gpio/1" } else if (req.indexOf(F("/gpio/1")) != -1) { val = 1; } 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'> 点击关灯 </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")); } |
相关内容
— hasClient – 判断是否有客户端访问
位置导航: ESP8266库 / WiFiServer库 / 本页