ESP32 WiFiClient Library – getNoDelay

Home / References / ESP32 Library / WiFiClientSecure

Description

The getNoDelay method in the ESP32 WiFiClient Library retrieves the current state of the Nagle’s algorithm setting for a TCP connection. When Nagle’s algorithm is disabled (via setNoDelay(true)), data is sent immediately without buffering, which is ideal for real-time applications. This method allows you to verify whether this low-latency mode is active, aiding in network optimization and debugging.


Syntax and Usage

The getNoDelay method is called on a WiFiClient object to check the Nagle’s algorithm status. Below is the syntax and a code snippet demonstrating its usage:

bool status = client.getNoDelay();

Here’s how this method can be used:

  • Without Arguments: Call the method on an active WiFiClient instance to retrieve a boolean indicating whether Nagle’s algorithm is disabled (true) or enabled (false).

For practical applications and examples of this method, please consult the “Example Code” section on this page. This section provides comprehensive guidance to help you better understand and apply the method effectively.


Argument(s)

This method does not require any arguments. It relies solely on the current configuration of the WiFiClient connection.


Return Value

The getNoDelay method returns a boolean (bool): true if Nagle’s algorithm is disabled (data is sent immediately), and false if it is enabled (data is buffered for efficiency). If the client is not connected, the return value may be unreliable.


Example Codes

Below is an example demonstrating how to use the getNoDelay method in a practical scenario. This corresponds to the usage outlined in Section 2.

Example: Checking Nagle’s Algorithm Status with getNoDelay

This example connects an ESP32 to www.httpbin.org, sets the Nagle’s algorithm state using setNoDelay, and uses getNoDelay to verify the setting, displaying the result on the Serial Monitor.

/*
 * Author: Avant Maker
 * Date: February 24, 2025
 * Version: 1.0
 *
 * Description: This example connects an ESP32 to
 * www.httpbin.org on port 80, sets the Nagle’s
 * algorithm state using setNoDelay, and uses
 * getNoDelay to verify the setting,
 *
 * License: MIT 
 * 
 * Code Source: This example code is sourced from the Comprehensive 
 * Guide to the ESP32 Arduino Core Library, accessible on 
 * AvantMaker.com. For additional code examples and in-depth 
 * documentation related to the ESP32 Arduino Core Library, 
 * please visit:
 *
 * https://avantmaker.com/references/esp32-arduino-core-index/
 *
 * AvantMaker.com, your premier destination for all things 
 * DIY, AI, IoT, Smart Home, and STEM projects. We are dedicated 
 * to empowering makers, learners, and enthusiasts with the resources
 * they need to bring their innovative ideas to life.
 */

#include <WiFi.h>

const char* ssid = "your-SSID";          // Replace with your Wi-Fi SSID
const char* password = "your-PASSWORD";  // Replace with your Wi-Fi password
const char* host = "www.httpbin.org";
const int port = 80;

void setup() {
    Serial.begin(115200);

    // Connect to WiFi
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\nConnected to WiFi");

    // Create a WiFiClient instance
    WiFiClient client;

    // Connect to the server
    if (client.connect(host, port)) {
        Serial.println("Connected to server");

        // Set Nagle’s algorithm to disabled (immediate sending)
        client.setNoDelay(true);

        // Check the Nagle’s algorithm status
        bool noDelayStatus = client.getNoDelay();
        if (noDelayStatus) {
            Serial.println("Nagle’s algorithm is disabled (immediate sending)");
        } else {
            Serial.println("Nagle’s algorithm is enabled (buffered sending)");
        }

        // Send HTTP GET request
        client.println("GET /get HTTP/1.1");
        client.println("Host: www.httpbin.org");
        client.println("Connection: close");
        client.println();

        // Wait for server response
        while (client.connected()) {
            if (client.available()) {
                String line = client.readStringUntil('\n');
                Serial.println(line);
            }
        }
        client.stop();
        Serial.println("Disconnected");
    } else {
        Serial.println("Connection failed");
    }
}

void loop() {
    // Nothing to do here
}

Explanation: The ESP32 connects to a WiFi network and establishes a TCP connection to www.httpbin.org. The setNoDelay(true) call disables Nagle’s algorithm, and getNoDelay is used to confirm this setting, printing the result to the Serial Monitor. This allows makers to verify the connection’s transmission behavior before sending an HTTP request.

ESP32 Library Index

ESP32 Arduino Core Library


FAQ

Ready to experiment and explore more about ESP32? Visit our website’s All About ESP32 Resources Hub, packed with tutorials, guides, and tools to inspire your maker journey. Experiment, explore, and elevate your skills with everything you need to master this powerful microcontroller platform!

error: Content is protected !!