Generelle Frage zu den ClientSockets

Ich bin nicht so firm in der Materie aber liege ich nicht richtig in der Annahme,
dass der Socket eine permanente Verbindung zu einem Gerät aufbaut?

In diesem Fall müsste er doch sofort erkennen wenn ein verbundenes gerät ausgeschaltet wird
und eine Fehlermeldung Produzieren bzw. den Status sofort ändern.

Ich kann meinen WifiController vom Strom nehmen und der verbunden ClientSocket merkt ertmal nichts davon,
er sendet sogar fleißig daten an den nicht mehr verbundenen Clienten.
Im zweifel so lange bis ich ein paar befehle sende erst dann meldet er den disconnet / fehler status.

Ist natürlich blöd wenn man im WebFront An/Aus schalten kann und der Fehler erst später bzw garnicht im Webfront erscheint.

Auch die Funktion SendDataToParent sendet die Daten ohne Fehlermeldung oder error code an den Socket.

Ist das normal ?

Xaver

Ja das ist ‚normal‘.
TCP Verbindungen werden normalerweise sauber abgebaut und somit geschlossen.
Wenn eine Seite der Verbindung abgestürzt ist (wie bei dir, einfach Stecker gezogen), und es keine Benachrichtigung gibt, dass die Verbindung beendet wurde, kommen solche Phänomene zustande.
Irgendwann merkt der Socket aber das die Verbindung tot ist, weil es auf die gesendeten Daten keinen ‚ACK‘ mehr bekommt.
Michael

Danke für die ausfühliche Antwort… damit ist einiges klar … man lernt eben nie aus :slight_smile:

Xaver