AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Server beenden Problem bei TIdTCPServer...
Thema durchsuchen
Ansicht
Themen-Optionen

Server beenden Problem bei TIdTCPServer...

Ein Thema von Kedariodakon · begonnen am 20. Okt 2004 · letzter Beitrag vom 4. Jul 2006
Antwort Antwort
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 13:59
Wenn ich den Server mit:
IdTCPServer.Active := False; Beende und es sind noch Clients Connectet, bekomm ich immer die Fehlermeldung "Zeitüberschreitung bei Beenden von Thread."

Weshalb das?
Wie kann ich das abstellen?

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 14:10
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.
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 14:27
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 )
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 15:09
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
Christian
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#5

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 15:14
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.
Gruß
UweR
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 16:50
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 Delphi-Referenz durchsuchenTIdTCPServer.Active
Zitat:
Specifies that the server is running and listening for connections.
property Active: Boolean; Description

Active is a Boolean property that indicates the current state of the Delphi-Referenz durchsuchenTIdTCPServer.
When Active is True, the server will Delphi-Referenz durchsuchenlisten for client connections, allocate threads and Delphi-Referenz durchsuchensocket handles for connections, and respond to thread execution in the manner prescribed by the Delphi-Referenz durchsuchenTIdTCPServer or descendant. When Active is False, connections and Delphi-Referenz durchsuchensocket handles will be closed, peer threads will be terminated and freed, the thread manager will be released, and the listener thread will be terminated and freed.

Active uses the protected write procedure SetActive to implement changes in the value of the property.
Und warum gibts dann Probleme wenn der das alles macht, wenn ich es auf False setze?
Ich versteh das net...

Hat jemand Rat?

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Server beenden Problem bei TIdTCPServer...

  Alt 20. Okt 2004, 21:06
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..!
Manuel Pöter
  Mit Zitat antworten Zitat
APALAND

Registriert seit: 4. Jul 2006
1 Beiträge
 
#8

Re: Server beenden Problem bei TIdTCPServer...

  Alt 4. Jul 2006, 12:15
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz