Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy Server Stoppen (https://www.delphipraxis.net/70399-indy-server-stoppen.html)

thetrue 29. Mai 2006 20:09


Indy Server Stoppen
 
nabend,

ich habe da so ein Problem/Frage:

wie kann man ein activen TIdTCPServer von den Indy Komponenten wieder stoppen?

also wenn man jetzt ihn aktiviert wartet er auf Verbindungen, wie kann ich das wieder stoppen?

mit
Delphi-Quellcode:
server.Active := fasle
kommt ein error wenn ich die Anwendung wieder beende/den Server so stoppe:

Terminate Thread Timeout


PS: und wenn jemand schon verbunden ist und ich es so stoppe kommt es zu Zugriefsverletzung auf adress 0000000

Zacherl 29. Mai 2006 20:25

Re: Indy Server Stoppen
 
Installiere mal die Indy9 Komponenten statt den Indy10ern. Diese Fehler treten öfters bei der 10er Version auf.

Florian

---Bernhard--- 29. Mai 2006 20:37

Re: Indy Server Stoppen
 
Hallo

Hatte solche Probleme auch öfters. Habe das jetzt gelöst, indem ich die Clientverwaltung selbst in die Hand nehme. (Speichere sozusagen jeden Client-Thread in nem Array). Um den Server zu beenden gehe ich jeden Client einzeln durch, trenne dessen Verbindung, setze am Ende ein Delay (ca. 1500ms) und dann setz ich active auf false.

Sollte es eine bessere Lösung geben würde mich diese auch sehr interessieren


PS: Deswegen Indy9 zu installieren halte ich nicht für sehr sinnvoll. Bei denen hatte ich auch des öfteren Probleme. Zudem bietet Indy10 auch einige neue Features ;)

thetrue 29. Mai 2006 20:42

Re: Indy Server Stoppen
 
ich habs ;)

Delphi-Quellcode:
{///////////////////////::::::C O N N E C T::::::////////////////////////}
procedure Tmain.menu_connectClick(Sender: TObject);
var
  i:Integer;
begin
    {connection to the server}
    if server.Active then
      begin
        i:=main.MDIChildCount;
        while main.MDIChildCount > 0 do
        begin
          main.MDIChildren[i].Free;
          i := i-1;
        end;
        server.Active := False;
        main.menu_connect.Caption := 'Connect';
      end
    else
      begin
        server.DefaultPort := ini.ReadInteger('Server', 'Port', 1984);
        server.Active := true;
        main.menu_connect.Caption := 'Disconnect';
      end;
end;
functioniert einbahnfrei ;)
PS: habe Indy 9

inherited 29. Mai 2006 21:22

Re: Indy Server Stoppen
 
Zitat:

Zitat von thetrue
Delphi-Quellcode:
        i:=main.MDIChildCount;
        while main.MDIChildCount > 0 do
        begin
          main.MDIChildren[i].Free;
          i := i-1;
        end;

warum nicht
Delphi-Quellcode:
  for i:= main.MDIChildCount downto 1 do
    main.MDIChildren[i].Free;
Zitat:

functioniert einbahnfrei ;)
DU meinst nicht zufällig einWANDfrei? ;)
oder gibt es den ausdruck und ich weis nichts davon? :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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