![]() |
[Indy] TCPServer mit aktiver Verbindung beenden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle zusammen,
ich brüte schon seit einiger Zeit daran. Wie kann einen Indy TCPServer mit aktvier Verbindung beenden, ohne daß ich die Fehlermeldung "Terminate Thread Timeout" bekomme. Irgendwie muß es gehen! Danke Claus |
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Versuch doch mal folgendes, TCP-Server mit .Active zu deaktivieren (einfach false setzen).
|
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Hallo Dax,
danke für deine Antwort. Das habe ich schon probiert. Weiter bin ich durch alle Verbindungen iteriert und habe sie sogar Client-seitig beendet. Alles nichts genützt. bye Claus |
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Dann verstehe ich dein Problem nicht. Versuchs doch mal mit den neuen Indy-Komponenten, falls deine schon älter sind.
|
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Hallo Dax,
Zitat:
bye Claus |
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Dann schicke doch einen Destroy-Befehl an die Clients, die dann die Verbindgung beenden und nicht versuchen, neu zu verbinden.
|
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Hallo Dax,
sie sollen sich ja wieder verbinden können, aber das automatisch. Ich sende dem Client schon einen Shutdown Befehl, der dann die Verbindung Client-seitig schließt. Trotzdem wird der Server nicht mit seiner Thread-Bearbeitung fertig. bye Claus |
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Dann iterier doch durch die Threads des Servers und Terminiere sie...
|
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Hallo Dax,
auch das habe ich bereits versucht ...
Delphi-Quellcode:
danke trotzdem. Irgendwo, gibt es einen Haken in meinem Code, der das verursacht. Aber was.
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var ACommBlock: TCommBlock; I: Integer; begin ACommBlock.Command := CmdShutdown; for I := 0 to Server.Threads.LockList.Count - 1 do begin TIdPeerThread(Server.Threads.LockList[I]).Connection.WriteBuffer(ACommBlock, SizeOf(ACommBlock), True); // sendet Shutdown Meldung an den Client, der die Verbindung selber schließt TIdPeerThread(Server.Threads.LockList[I]).Connection.DisconnectSocket; // Sicher ist sicher !!! TIdPeerThread(Server.Threads.LockList[I]).Stop; // Terminate etc. alles ohne Erfolg end; CanClose := True; end; bye Claus |
Re: [Indy] TCPServer mit aktiver Verbindung beenden
Versuch doch mal anstatt .Stop lieber .Terminate..
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz