Entwickler-Ecke

Internet / Netzwerk - Fehler bei Indy Server Active := False


TimKellner - So 26.11.06 21:50
Titel: Fehler bei Indy Server Active := False
Hallo Liebe Communty,

ich habe ein kleines Script geschrieben, das Clients Connecten lassen kann. Ich möchte jedoch das man im Programm(Server) sagen kann das der TCP Indy Server Active := False ist. Falls jedoch ein Client connected hat bekommme ich diese Fehlermelung:
Im Programm Server.exe ist eine Exception der Klasse EIdClosedSocket aufgetreten. Meldung:'Verbindung aufgehoben' Prozess wurde aufgehoben.

Ich setzte die Verbindung mit

Delphi-Quelltext
1:
TCP.Active := FALSE;                    

auf False. Doche wie kann ich die Clienst ALLE vorher trennen, damit ich keine Exception bekomme.

Danke & MFG
Tim


alzaimar - So 26.11.06 21:58

Ich kenn mich mit TCP nicht sonderlich aus, aber sollte nicht der Client die Verbindung beenden? Alles Andere führt doch zwangsläufig zu einer Exception, wobei angemerkt werden soll, das bei den Indies eine Exception nicht notwendigerweise ein Fehler ist, sondern eben eine "Ausnahme" (von der Regel), nach dem Motto: "Das ist so nicht vorgesehen".


TimKellner - So 26.11.06 22:07

Das stimmt durchaus. Nur wenn ich generell sage das verbindungen nicht mehr möglich sind muss ich ja zwangsläufig auch die aktiven verbindungen trennen


VaNaTiC - Mo 27.11.06 17:16

Laut InDy-Sourcecode IdTCPServer.pas werden in SetActive die offenen Verbindungen geschlossen.
Kam die Exception bei Ausführung über F9 in der IDE oder auch direkt per Programmstart.

Wenn alles nix hilft, versuch mal über das Property "Threads: TThreadList" alle TIdPeerThreads manuell zu schliessen über Disconnect.

Schau Dir dazu mal den Quellcode aus IdTCPServer.pas zur Methode TIdTCPServer.TerminateAllThreads;
an.


TimKellner - Mo 27.11.06 19:41

Vielen Dank hat sich erledigt funktioniert