lokaler TCP Server (Telnet) reconnect/timeout von socket benötigt

  • hallo zusammen,

    im GUI Desingnen bin ich noch schlechter als im scripten. Daher habe ich mir überlegt eine vorhandene CLI als Bedienoberfläche für meine Funktionen zu nutzen. nach dem ich versucht habe "CMD" für meine Zwecke mit mäßigem Erfolg zu missbrauchen, habe ich mich entschlossen Putty (Telnet) als Bedienoberfläche zu verwenden. Also Putty ist mein Client und das Script ist der Server.

    soweit so gut


    Habe ich ein mal eine Telnet Verbindung hergestellt, funktioniert die Verbindung auch ausreichen gut. Schließe ich mein Telnet Terminal, sollte @error das aktuelle Socket eigendlich schließen. Leider triggert @error nicht. Was übersehe ich?

    als Notlösung lasse ich momentan den Server etwas im Socket zum Client senden. Ist das Putty-Terminal geschlossen triggert dann @error. Für diesen keepalive habe ich noch kein Zeichen gefunden, welches unsichtbar bleibt und somit die Puttysession nicht stört.

    Vielen Dank das du bis hier her gelesen hast

    Liebe Grüße Niklas

  • Du kannst glaube ich von der Serverseite aus nicht feststellen ob ein Client die Session auf der anderen Seite beendet hat.

    Das @error (-2, not connected) sollte nur geschmissen werden, wenn du es vorher mit TCPCloseSocket geschlossen hast.

    Ich habe in einem Java-Projekt dasselbe Problem gehabt, und da habe ich einfach in bestimmten Intervallen kleine Strings an den Client gesendet.

    Wenn mir die Send-Methode einen Fehler zurückgegeben hat (Nachricht konnte nicht verschickt werden) habe ich so festgestellt, dass der Client die Verbindung beendet hat.

  • Danke für die schnelle Antwort

    Wenn ich die stabile Putty-Session dupliztiere, öffent sich eine weitere Putty-Session die aber keinerlei kommunikation zum Server hinbekommt aber auch nicht abgewiesen wird.

    Schließe ich nun die stabile Session und im Anschluss die Bug-Session, gelingt es dem server Script gleich zwei mal die Session zu beenden und zurück zur TCP Accept Schleife zu springen.

    Mysteriös

  • Meine Lösung.