位置导航: ESP8266库 / WiFiServer库 / 本页
说明
此函数用于设置ESP8266服务器是否使用Nagle算法来将发送的信息先拆分成小包再发送。
使用Nagle算法来拆包发送的优点是可以将较大的数据信息拆分,从而让信息传输的网络利用率更加优化。但缺点是比起不拆包发送的模式来说,拆包发送的速度要慢一些。
语法
server.setNoDelay(val)
参数
val: 此参数类型为bool。以下是参数功能说明。
– true: 不使用Nagle算法来将发送的信息先拆分成小包再发送。
– false: 使用Nagle算法来将发送的信息先拆分成小包再发送。
返回值
无
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
当您将以下示例程序中的WiFi连接信息修改并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,您将可以从串口监视器获取当前ESP8266开发板的IP地址。此时,ESP8266已经成功建立了网络服务器。您可以通过ESP8266的IP地址来访问该网络服务器。
假设您的ESP8266开发板IP地址是192.168.0.110。那么接下来您可以通过浏览器输入该IP地址。(如下图所示)

当您在浏览器地址栏中输入Ip后并按下回车,这时您将看到浏览器中显示上图所示的网页页面。该页面即是通过ESP8266所建立的。在以下的示例程序中,我们使用了语句server.setNoDelay(true);将发送的信息先拆分成小包再发送。
| 
					 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  | 
						/**********************************************************************   项目名称/Project          : 零基础入门学用物联网   程序名称/Program name     : WIFIServer_demo_2   团队/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地址。   -----------------------------------------------------------------------   本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。   该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页:   http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> //此处设置您的wifi接入信息 #ifndef STASSID #define STASSID "z" #define STAPSK  "18xxxxxx52" #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"));   //停止小包合并发送   server.setNoDelay(true);   //打印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")); }  | 
					
相关内容
位置导航: ESP8266库 / WiFiServer库 / 本页