![]() |
Server beenden Problem bei TIdTCPServer...
Wenn ich den Server mit:
Delphi-Quellcode:
Beende und es sind noch Clients Connectet, bekomm ich immer die Fehlermeldung "Zeitüberschreitung bei Beenden von Thread."
IdTCPServer.Active := False;
Weshalb das? Wie kann ich das abstellen? Bye |
Re: Server beenden Problem bei TIdTCPServer...
Ich weiß nicht, wie das bei den Indys ist, aber kann man die User nicht sozusagen "kicken"?
Dann werden automatisch alle Verbindungen gekappt und du kannst disconnecten. |
Re: Server beenden Problem bei TIdTCPServer...
hallo,
wenn du controlle über die clients hast (selbst programmiert) schick doch bevor du den server schlließt eine nachricht an die clients das sie sich diconnecten sollen mfg freak (hat inzwischen sein ganzes delphi verschickt :mrgreen: ) |
Re: Server beenden Problem bei TIdTCPServer...
Ich soll ne Liste aller Clients, welche connecteten erstellen, nur um den Server beenden zu können?
Halte ich für eine Resourcenverschwendung, da ich so eine Liste sonst nirgends bei dem Server brauche... Das muß auch wie anders gehen... Kann ich irgendwie ohne ne eigene Liste zu erstellen auf alle offenen Verbindungen zugreifen? So alla Broadcast? Bye |
Re: Server beenden Problem bei TIdTCPServer...
Hallo Christian,
der Indy-server selbst verwaltet ja schon eine Liste aller Clients bzw. Threads. Da mußt du halt durchlaufen und alle disconnecten. Schau mal bei der Property Threads nach. Das ist genau die Liste die du suchst. |
Re: Server beenden Problem bei TIdTCPServer...
Threads is a read-only TThreadList property that acts as a container for TIdPeerThread items created in the listener thread.
Sagt die Hilfe... Aber ich kann dadurch auf kein Thread zugeifen und schon gar nicht ihm einen Befehl geben... So dann weiteres laut ![]() Zitat:
Ich versteh das net... Hat jemand Rat? Bye |
Re: Server beenden Problem bei TIdTCPServer...
Also eigentlich werden alle Verbindungen getrennt wenn man Active auf False setzt. Wichtig dabei ist allerdings, dass jede Verbindung einen eigenen Thread hat und beim Beenden der Verbindung das OnDisconnect-Ereignis im Kontext des Peer-Threads (nicht des MainThreads) ausgeführt wird. Also sollte man in diesem Ereignis keine allzu zeitaufwändigen Sachen machen und aufpassen, dass man keinen Deadlock produziert..!
|
Re: Server beenden Problem bei TIdTCPServer...
Hallo,
versuchs mal mit der folgenden Funktion function Tform1.stopServer: boolean; begin try idtcpserver.TerminateWaitTime := 1000; idtcpserver.Bindings.clear; IdTCPServer.Active := false; Result := not IdTCPServer.Active; except result := false; end; end; ich hatte dies Problem auch, und konnte es erst lösten nachdem ich die TerminateWaitTime gesetzt hatte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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