Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [Indy10] prüfen, ob die Verbindung zum Server besteht (https://www.delphipraxis.net/83080-%5Bindy10%5D-pruefen-ob-die-verbindung-zum-server-besteht.html)

Zacherl 27. Dez 2006 01:07


[Indy10] prüfen, ob die Verbindung zum Server besteht
 
Hi,

wie kann ich beim IdTCPClient prüfen, ob noch eine Verbindung zum Server besteht. Wird der Server nämlich z.B. über den Taskmanager beendet, registriert der Client das nicht richtig und die Property Connected bleibt auf true.

Florian

supermuckl 27. Dez 2006 03:12

Re: [Indy10] prüfen, ob die Verbindung zum Server besteht
 
sende evtl immer wieder wieder ein paket an den serv, der das erwiedern muss

Zacherl 27. Dez 2006 13:38

Re: [Indy10] prüfen, ob die Verbindung zum Server besteht
 
Das ist mir zu unsauber, bzw erzeugt wieder mehr Traffic. Es wird sogar eine Exception ausgegeben, wenn die Verbindung unsauber beendet wurde (Connection reset by peer), aber innerhalb meiner Consolenanwendung bemerke ich diese nicht.

Folgendes steht in einem Thread:
Delphi-Quellcode:
repeat
  if not Client.Connected then
  try
    Client.Connect;
  except

  end;
  Sleep(10000);
until DoTerminate;
Wie fange ich nun hier den Fehler ab? Connected bleibt auf true ...

alzaimar 27. Dez 2006 19:37

Re: [Indy10] prüfen, ob die Verbindung zum Server besteht
 
Zitat:

Zitat von Florian Bernd
Das ist mir zu unsauber, bzw erzeugt wieder mehr Traffic.

Ein 'reconnect', wie in dem von Dir angegebenen Code produziert auch Traffic. Du wirst umhin kommen, präventiv ein 'Keepalive' zu schicken. Ich meine, die Indies können das von sich aus, aber wenn nicht, dann schick einfach alle 10 Sek ein Paket. Nennenswerten Traffic wird das nicht verursachen.
Zitat:

Zitat von Florian Bernd
Es wird sogar eine Exception ausgegeben, wenn die Verbindung unsauber beendet wurde (Connection reset by peer), aber innerhalb meiner Consolenanwendung bemerke ich diese nicht.

Stimmt. Dagegen kannst du wohl nix machen, außer SysUtils einbinden, ein paar 100k overhead in Kauf nehmen, aber dafür saubere Exception-Behandlung erkaufen.

Wenn Du nun eine perfekte 1,5k Konsolen-Anwendung (wieso eigentlich?) haben willst, dann greif zu den ICS-Komponenten und programmiere es richtig.... ICS gibts bei www.overbyte.be


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