Problema disconnessione automatica WiFiServer()

Buongiorno, ho da poco comprato la WiFi Shield ufficiale e già dalla scrittura dei primi programmi ho notato diversi problemi.

Tralasciando il fatto che molte volte la shield “smette” di rilevare qualsiasi rete Wifi, vorrei riuscire a trovare una soluzione ad un problema relativo all’ oggetto WifiServer.

Utilizzando gli esempi base ho provato a creare un piccolo sketch in cui arduino si connette ad una rete wifi e dopo di che crea un server sulla porta 15000.

Ecco il codice (magari può essere di aiuto):

#include <SPI.h>
#include <WiFi.h>


char ssid[] = "";      //  Nome Rete
char pass[] = "";   // Password Rete


int status = WL_IDLE_STATUS;


WiFiServer server(15000); // Creo Server sulla porta 15000


void setup() {
  Serial.begin(9600); 
  
  while ( status != WL_CONNECTED) { //provo a connettermi alla rete
    Serial.print("Tentativo di connessione: ");
    Serial.println(ssid);   
    status = WiFi.begin(ssid, pass);
    delay(1000);
  } 
  server.begin();
  MyIP();
}


void loop() {
  WiFiClient client = server.available(); //attendo una connessione
  
 if (client) {
    Serial.println("Nuovo Client");
    String msg="";
    while (client.connected()) { //fino a quando il client è connesso
      if (client.available()) { //se disponibile
        char c = client.read(); //leggo un carattere
        msg+=c; //memorizzo il carattere
        if (c == '\n') { // se arriva il carattere di stop (\n)
          Serial.print("[DATA]:" + msg);
          //client.println("OK"); //rispondo OK al client
          msg=""; 
        }
      }
    }
    delay(10); 
    Serial.println("Client disconnesso");
    client.stop();
  }
}


 void MyIP() {
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

Per scrivere il client ho scelto il linguaggio C#( ho provato ad utilizzare sia la classe TcpClient che i Socket) . Arrivo al dunque.
Dopo aver aver stabilito la connessione con il server, questo dopo 10 SECONDI precisi disconnette in automatico il client; ho pensato che fosse un problema di time-out del server. Allora come soluzione ho provato a far inviare al client ogni 100 ms dei segmenti per cercare di mantenere viva la connessione (classico keep-alive) ma arduino “trancia” lo stesso in automatico la connessione.

Ho pensato allora che il problema potesse essere dovuto al linguaggio C# e allora ho scritto un programma in Java per Android e la situazione non è cambiata minimamente.

Vorrei sapere se esiste un modo mediante il quale il server non chiude in automatico la connessione con il client. Grazie :slight_smile:

Nessuno conosce una soluzione ?

Ho speso 70 euro per la vostra shield di merda... gradirei almeno ricevere una risposta sul suo funzionamento