Server con ESP32 rimane bloccato se il client perde la connessione

Buongiorno,
una domanda su ESP32

Ho un server con ESP32 e funziona bene. Se il client connesso si disconnette chiudendo correttamente la connessione al server, il server riesce a chiudere il socket e rimane in attesa di una nuova connessione di un nuovo client

Se, invece, il client si spegne o si resetta per qualche motivo, quindi la disconnessione non è "pulita", il server rimane stuck, rendendone necessario il riavvio

Qualcuno ha qualche idea riguardo a come impedire questo inconveniente? Grazie

Posto il codice

#define COUNT_LOW 4670
#define COUNT_HIGH 8000
#define TIMER_WIDTH 16
#include "esp32-hal-ledc.h"
#include <esp_task_wdt.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>

int status = WL_IDLE_STATUS;
WiFiServer server(80);

const int pinout = 32; 

const int vmin = 0;
const int vmax = 1;

int minmax[35][2]; 

int currentVal = 0;
 
void setup() {
  
  
  minmax[pinout][vmin] = 4600;
  minmax[pinout][vmax] = 7200;

  ledcSetup(1, 50, TIMER_WIDTH);

  ledcAttachPin(pinout, 1);


  Serial.begin(9600);
  
  WiFi.begin("homelife2014", "XXXXXX");  
  while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println(".");}
  WiFi.config(IPAddress(192,168,1,4), IPAddress(192,168,1,1), IPAddress(255,255,255,0));    
  Serial.println(WiFi.localIP());

  server.begin();  
}
 
void loop() {
  WiFiClient client = server.available();

  if (!client) return;
  Serial.println("connected");
  while (client.connected()) {      
    client.setTimeout(10000);
    if (client.available()){
      String cmd = client.readStringUntil('\n');
      cmd.replace("\n","");
      Serial.println("Letto: "+cmd);
      for (int y=currentVal;y<cmd.toInt();y++){
        ledcWrite(1, map(y, 0, 90, minmax[pinout][vmin], minmax[pinout][vmax]));   
        delay(20);   
      }
      currentVal = cmd.toInt();
     }
  }
  client.stop();
  Serial.println("stop");
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.