Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Onlinestatus ermitteln (https://www.delphipraxis.net/39401-onlinestatus-ermitteln.html)

emsländer 2. Feb 2005 09:41


Onlinestatus ermitteln
 
Moin,

Wie kann ich (in Delphi) sicher feststellen, ob der Rechner eine Internetverbindung hat?

Dabei muss es irrelevant sein, ob er in einem Netz hinter einer Firewall, einem Router steht oder auch direkt angeschlossen ist.


Gruss

EL

Sharky 2. Feb 2005 09:55

Re: Onlinestatus ermitteln
 
Hai EL,

eigentlich überhaupt nicht ;-)
Wenn es über einen Router geht kannst Du nicht wissen ob eine Internetverbindung besteht. Dazu gab es sogar mal irgendwo eine lustige Geschichte.

[EDIT]Ich wusste doch das ich es hier in der DP gelesen habe. Der Link im Beitrag von Chäffe ganz unten gibt dir die Antwort

Plague 2. Feb 2005 09:56

Re: Onlinestatus ermitteln
 
Ich würde mit der IdHTTP Komponente eine irelevante Seite oder Datei aufrufen und in einen Stream laden. Wenn dieser dann etwas enthält kannst Du sicher sein, dass du im Internet bist...

Gruß
Thomas

alcaeus 2. Feb 2005 10:05

Re: Onlinestatus ermitteln
 
Hallo Plague,

das heißt nur, dass bei einer evtl. Firewall der HTTP-Port freigeschaltet ist. Endgültigen Aufschluss darüber kann man nicht geben, vor allem nicht wenn irgendwo ein Proxy dazwischenhängt, und die Proxyeinstellungen z.B. im IE eingetragen sind. Dann geht das mit den Indys nicht, da du dort ja auch noch die Proxyeinstellungen setzen müsstest.

Greetz
alcaeus

emsländer 2. Feb 2005 10:12

Re: Onlinestatus ermitteln
 
Zitat:

Zitat von alcaeus
Hallo Plague,

das heißt nur, dass bei einer evtl. Firewall der HTTP-Port freigeschaltet ist. Endgültigen Aufschluss darüber kann man nicht geben, vor allem nicht wenn irgendwo ein Proxy dazwischenhängt, und die Proxyeinstellungen z.B. im IE eingetragen sind. Dann geht das mit den Indys nicht, da du dort ja auch noch die Proxyeinstellungen setzen müsstest.

Greetz
alcaeus


Hi,

die Proxyeinstellungen sind ja nicht das Problem - kann man ja machen.

ich habe im Moment folgende Funktion dafür.

Delphi-Quellcode:
function Tisacheck.isOnline(VerifyUrl : String; ConnectIfOffline : Boolean=false) : Boolean;
Var bOn : Boolean;
 // Sub-Procedure
procedure checkOnline;
  Var wsaData : TwsaData;
  begin
  if(WsaStartup(MAKEWORD(1,1),wsadata) = 0) then
    try
      // Internetverbindung prüfen
      bOn := (InternetGetConnectedState(nil,0));
    finally
      WsaCleanUp;
    end;
  end;
//Main-Function
begin
  result := false;
  checkOnLine;
  if (not bOn) and (ConnectIfOffline) then begin
    if InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE or   INTERNET_AUTODIAL_FORCE_UNATTENDED, 0) then begin
      checkOnline;
      result := bOn;
    end;
  end
  else
    result := bOn;
end;
Solang nur das Netzwerkkabel gezogen wird, klappt das ja ganz gut. Aber diese Funktion erkennt nicht, wenn eine URL nicht erreichbar ist.

Gruss

EL

Plague 3. Feb 2005 11:07

Re: Onlinestatus ermitteln
 
Das wiederrum wäre mit meiner Methode ersichtlich!

Gruß
Thomas

corgan 3. Feb 2005 11:29

Re: Onlinestatus ermitteln
 
Zitat:

Zitat von Plague
Das wiederrum wäre mit meiner Methode ersichtlich!

Gruß
Thomas

hast du da evtl ne fertige procedure ?

tnxs
greetz Corgan

corgan 3. Feb 2005 11:38

Re: Onlinestatus ermitteln
 
Zitat:

Zitat von "emsländer

Delphi-Quellcode:
function Tisacheck.isOnline(VerifyUrl : String; ConnectIfOffline : Boolean=false) : Boolean;
Var bOn : Boolean;
 // Sub-Procedure
procedure checkOnline;
  Var wsaData : TwsaData;
  begin
  if(WsaStartup(MAKEWORD(1,1),wsadata) = 0) then
    try
      // Internetverbindung prüfen
      bOn := (InternetGetConnectedState(nil,0));
    finally
      WsaCleanUp;
    end;
  end;
//Main-Function
begin
  result := false;
  checkOnLine;
  if (not bOn) and (ConnectIfOffline) then begin
    if InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE or   INTERNET_AUTODIAL_FORCE_UNATTENDED, 0) then begin
      checkOnline;
      result := bOn;
    end;
  end
  else
    result := bOn;
end;

wofür ist denn die variable VerifyUrl : String; gedacht ?
die wird doch garnicht angesprochen ??

greetz Corgan


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz