I use an ESP32 to open an access point and listen for TCP connections over a WiFiServer object.
When I get a client on the server I want to know when it has disconnected.
Currently I have a simple piece of code on both the client and the server side. I connect using a TcpClient in C#.
When I call client.close()
on the client side, the client.connected()
loop on the server just continues forever.
Here is the ESP code:
void setup()
{
WiFi.mode(WIFI_AP);
WiFi.softAP("test");
WiFi.softAPConfig(IPAddress(192, 168, 4, 1), IPAddress(192, 168, 4, 1), IPAddress(255, 255, 255, 0));
Serial.println(WiFi.localIP());
server.begin();
}
void loop()
{
while (!client)
{
client = server.available();
delay(10);
}
while (client.connected())
{
Serial.println("ok");
delay(1000);
client.read();
}
}
C# code:
static void Main(string[] args)
{
TcpClient client = new TcpClient("192.168.4.1", 222);
client.Close();
}