TimeOut bei Zugriff auf eine URL
-
Ich habe ein Programm, dass beim Start auf eine URL zugreift und diese lädt mit OpenUrl() der InternetSession.
Allerdings möchte ich, dass es das nur machen, wenn auch eine Internet-verbindung besteht. Meine aktuelle Lösung wartet auf einen TimeOut und gibt dann eine Fehlermeldung aus. Leider kann ich die länge des TimeOuts nicht festlegen, so das der User im schlechten Fall rund 15 oder 20 Sekunden warten muss.Meine Fragen:
Gibt es eine Möglichkeit das Timeout zu definieren?
Kann ich feststellen (ohne TimeOut), ob das System generell Internet-Anschluss hat? Gerade bei Systemen mit Routern dürfte das Schwierig sein, oder?Danke und viele Grüße
Dirk
-
du kannst z.b. vorher eine 'normale' tcp-verbindung zum server aufbauen. socket asynchron machen (ioctlsocket), connecten und wenn z.b. nach ca. 3 sekunden eine verbindung steht (mit select abfragen oder so), den socket schliessen und weiter mit OpenUrl()
-
Das klingt gut. Bei einer direkten Socket-Verbindung kann ich das "TimeOut" so frei bestimmen?
-
aburg schrieb:
Das klingt gut. Bei einer direkten Socket-Verbindung kann ich das "TimeOut" so frei bestimmen?
ja, man kann 'select' einen timeout-wert mitgeben und es blockt dann bis entweder die verbindung aufgebaut wurde oder die zeit abgelaufen ist.
-
Man kann auch mit CInternetSession -> SetOption das Flag INTERNET_OPTION_CONNECT_TIMEOUT
entsprechend setzen. Ist die Zeit dann abgelaufen wird abgebrochen.[... INTERNET_OPTION_CONNECT_TIMEOUT
Sets or retrieves an unsigned long integer value that contains the time-out value to use for Internet connection requests. Units are in milliseconds. If a connection request takes longer than this time-out value, the request is canceled. ...]
Gruß,
Janusch