Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ConnectTimeOut bei IF abfrage (https://www.delphipraxis.net/153038-connecttimeout-bei-if-abfrage.html)

SyntaxXx 18. Jul 2010 21:08

ConnectTimeOut bei IF abfrage
 
Guten abend, ich hoffe ihr könnt mir weiter helfen.
Und zwar verwende ich in meinem programm eine Proxy funktion.
Bzw eine Socks5 funktion.

Jetzt möchte ich testen ob der Socks funktioniert.
Funktioniert auch ales soweit, nur eine kleinigkeit nicht.

Ich habe in meinem Progrmm jetzt eine Connection Timeout eingestellt.

Wie mache ich das jetzt, wenn ich sagen möchte:

Wenn Connection Timed Out dann mache ...

Leider finde ich keine funktion die False oder true zurück gibt.
Könnt ihr mir vielleicht sagen, wie ich das am besten mache?

mkinzler 18. Jul 2010 22:07

AW: ConnectTimeOut bei IF abfrage
 
Welche Komponente? Gibt es einen passenden Event?

fatalerror 18. Jul 2010 22:10

AW: ConnectTimeOut bei IF abfrage
 
Mit Try Except?

Delphi-Quellcode:
   HTTp:=TidHTTP.Create(NIL);
   HTTP.ConnectTimeout:=5000;
   HTTP.ReadTimeout:=1000;
   try
     result:=HTTP.get(URL);
   except
     on E: Exception do
     begin
       myresult:=-1;
       showmessage('Fehler: '+E.Message);
     end;
   end;

SyntaxXx 18. Jul 2010 22:13

AW: ConnectTimeOut bei IF abfrage
 
Also ich habe das nun so:

Delphi-Quellcode:
idhttp1.ConnectTimeout := 20000 // 20 Sekunden für Timeout
Was muss ich mahcen damit ich jetzt sagen kann, wenn die 20 sekunden um sind mache das und das?


EDIT: Was bedeutet " HTTP.ReadTimeout:=1000;" ?

Was bewirkt das genau?

fatalerror 18. Jul 2010 22:22

AW: ConnectTimeOut bei IF abfrage
 
Zitat:

Zitat von SyntaxXx (Beitrag 1036073)

EDIT: Was bedeutet " HTTP.ReadTimeout:=1000;" ?

Was bewirkt das genau?

ich habe einfach mal angenommen du verwendest Indy:
siehe: Indy Dokumentation

Wie du das löst, nun zum Beispiel indem du eine eigene Funktion schreibst und die Fehlermeldung auswertest. Ich kenne leider die Fehlercodes bei Indy nicht auswendig.

Also:

Baueverbindungauf(Url:String): Integer

Nun prüfst du nach dem Aufruf von der Funktion im Rückgabewert ob ein Fehler aufgetreten ist

SyntaxXx 18. Jul 2010 22:29

AW: ConnectTimeOut bei IF abfrage
 
Joa ich verwende Indy.
Ich wußte nur nicht, was diese Codezeile genau bewirkt, weil ich es eigendlich genau so habe wie du geschrieben hats, nur eben ohne das.

fatalerror 19. Jul 2010 08:34

AW: ConnectTimeOut bei IF abfrage
 
Eigentlich benötigst du überhaupt keine Abfrage. Das Try Except übernimmt das für dich.

Schematisch gesagt:

Versuche (Try)
  • hole den Text einer Internetseite (als Beispiel)
    Jetzt versucht Indy eine Verbindung zum Server herzustellen
    und wartet solange bis die Verbindung steht.
    kann während der Connection Timeout Zeit keine Verbindung
    hergestellt werden wirft Indy einen Timeoutfehler
  • Jetzt versucht Indy den Inhalt der Seite zu holen
    und wartet bis die Daten komplett übertragen sind
  • kann nicht der komplette Text vom Server während
    der Read Timout Zeit heruntergalden werden wirft Indy einen Fehler
  • Hier führst du deinen Code aus, der etwas mit den geholten Daten macht
    Dieser Code wird nur ausgefünrt, wenn kein Fehler aufgetreten ist
Bei Fehler (Except)
  • Hier behandelst du die Verbindungsfehler
    dieser Code wird nur ausgeführt wenn ein Fehler (zb Timout)
    aufgetreten ist


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