Einzelnen Beitrag anzeigen

Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#1

TIdTCPServer: OnExecute-Schleife trotz Disconnect

  Alt 4. Sep 2009, 11:04
Hallo,

ich teste gerade einen von mir implementierten Windows-Dienst über Telnet.
Über Telnet simuliere ich einen Client und schicke dem IdTCPServer Kommandos.
Die werden auch alle gut erkannt.

Jedoch habe ich ein Problem mit dem Disconnect.
Wenn ich vom Client das Disconnect-Kommando sende, erkennt dieses mein Dienst auch und ruft die richtige Prozedur auf, um den Disconnect durchzuführen.
Hier führe ich u.a. folgende Anweisungen aus:
Delphi-Quellcode:
log( 'Beende Verbindunge zu Host=' + client.host+ ' Port=' + IntToStr(client.Port)+' ....',1);
// dem client mitteilen das jetzt die verbindung beendet wird
senden(client,disconnect_zeichen);
client.Context.Connection.Disconnect(True);

// Den Client aus der Liste verbundener Clients löschen
Tclient(client_list.Objects[i]).free;
client_list.Delete(i);

log('disconnect: Verbindung beendet',1);
Mein Telnet-Fenster schließt sich auch korrekt, jedoch wird beim IdTCPServer weiterhin in einer Endlosschleife das OnExecute-Event ausgelöst, was meinen Dienst zu ständigen Fehlermeldungen bringt, da er den Client nicht mehr in seiner Client-Liste führt.

Das eigentliche OnDisconnect-Event wird erst dann ausgelöst, wenn ich den Dienst wieder beende.

Wie kann ich das ständige Triggern des OnExecute-Ereignisses verhindern und ein korrektes Auslösen des OnDisconnect-Events herbeiführen?

Danke für die Hilfe!

Sascha.
  Mit Zitat antworten Zitat