Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Besteht eine Internetverbindung? (https://www.delphipraxis.net/46-besteht-eine-internetverbindung.html)

DeCodeGuru 8. Jun 2002 09:49


Besteht eine Internetverbindung?
 
Hi Leute,

mir fiel letztens auf (als ich vor einem Rechner, der über nen Router ins iNet geht, saß), dass ich nicht richtig überprüfen konnte, ich ich jetzt eingewählt bin oder nicht.

Normalerweise macht man das ja mit InternetGetConnectedState, aber das hat da nicht funktioniert. Das Ergebnis war immer, dass eine Verbindung hergestellt war, was aber nicht stimmte.

Hat da jemand ne Frage??

MfG DeCodeGuru

Christian Seehase 8. Jun 2002 12:21

Moin DeCodeGuru,

probier's mal so
Code:
const
  _asConnectionState : array [Boolean] of string = ('OFFLINE','ONLINE');
  INTERNET_CONNECTION_OFFLINE = $20;

var
  dwResult : DWord;

begin
  InternetGetConnectedState(@dwResult,0);
  ShowMessage(_asConnectionState[(dwResult and INTERNET_CONNECTION_OFFLINE) = 0]);
end;
[/code]

Yheeky 8. Jun 2002 12:23

Hi!

Mein erstes Posting :lol:
Also schau mal, vielleicht hilft dir folgendes.

http://www.swissdelphicenter.ch/de/showcode.php?id=70

Gruß Yheeky

DeCodeGuru 8. Jun 2002 13:17

Hi!

@Christian: Ich habe das jetzt mal ausprobiert und es funktioniert ohne Router einwandfrei. Mit Router konnte ich noch nicht testen, habe das Prog meinem Freund aber schon mal per Mail geschickt.

@Yheeky: Ich werde das gleich auch nochmal ausprobieren (kann ja nicht schaden :o )

MfG DeCodeGuru

DeCodeGuru 9. Jun 2002 09:31

Moin Leute,

also ich habe das ausprobieren lassen und es hat nicht funktioniert. Leider!! :cry:

Hat nochjemand eine Idee?

MfG DeCodeGuru

thomasdrewermann 9. Jun 2002 10:02

Vielleicht kannst du es mit einer NMHTTP Komponente probieren. Kannst ja einfach ne Seite Aufrufen lassen und wenn der aufruf scheitert den Fehlercode auswerten. Wenn der Fehlercode besagt, dass der Name nicht aufgelöst werden kann, dann bist du offline. Andernfalls bist du online. Zur Verwendung der NMHTTP Kompo gibts bei den Demo's unter Fastnet ein Beispiel.

DeCodeGuru 9. Jun 2002 10:05

Hi Thomas,

ich werde es probieren.

Zitat:

Ich hoffe ich habe dir damit weitergeholfen
Ja, hast du :D

Zitat:

Ich versuch das ganze mal in Code zu verfassen
Das wäre echt super.

MfG DeCodeGuru

Darty 9. Jun 2002 12:52

Hi,

hier mein Code, auch wenn der ähnlich wie die von Christian Seehase ist. Ich konnte mein Freund nicht erreichen, aber er hat auch einen Router und ich vermute bei ihm hatte es geklappt ..

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  dwResult : cardinal;
begin
  dwResult := 0;
  if internetgetconnectedstate(@dwResult,0) = FALSE then
    begin
      ShowMessage('Keine Verbindung');
    end
  else
    begin
      ShowMessage('Verbindung vorhanden');
    end
end;
Und in Uses muss noch WININET eingefügt werden.

Luckie 9. Jun 2002 13:12

@Darty: Hat das nichts schon Christian gepostet? das hat doch nicht funktioniert..

Wenn du das mit dem HTTP-Download machst, dann nimm aber eine Seite, die auch relativ stabil, Google oder so.

Darty 9. Jun 2002 13:24

@Luckie: Du redest mich mit meinen Nick an :), für alle unwissende .. Man nennt mich auch Darty ;) Ja Luckie, ich sagte es doch, dass Christian es schon ähnlich postete, aber ich meine das geht mit dem Router auch ...

Aber die Idee eine Seite aufzurufen und bei nicht erreichen dann davon ausgehen dass die Verbindung nicht besteht ist gut. Aber auch nicht 100%, den eine Seite ist nie 100% erreichbar !!! Also würde diese "Not-Lösung" in den meisten Fällen bei einer immer gut erreichbare Seite funktionieren, aber in Einzelfällen wenn diese Seite off ist oder was auch immer würde dann der Schuss nach hinten losgehen ...

Luckie 9. Jun 2002 13:37

Na dann prüf doch drei Seiten:
Es werden ja wohl nicht alle dieser großen Seiten gleichzeitig offline sein :mrgreen:.

DeCodeGuru 9. Jun 2002 13:51

Hi Leute,

erstmal ein Danke an euch alle, die mir ne Antwort geschrieben haben.

Ich denk auch, dass eine der drei Seiten, die Luckie genannt hat, immer online sein wird. Aber: Der Test darf halt nicht so lange dauern. Ich möchte eigentlich nicht 2-5 Sekunden warten, bis ich das Ergebnis habe.

Verständlich, oder?

MathiasSimmack 9. Jun 2002 14:46

Musst du doch nicht. Wenn eine der Seiten gefunden ist, brauchst du die anderen doch nicht prüfen und brichst stattdessen die Funktion mit einem positiven Ergebnis ab.

Und wenn du online bist, sollte dieser Test relativ schnell gehen. Also, keine 2 bis 5 Sekunden dauern.

Kennt jemand diese Funktion hier. Ich möchte behaupten, ich hab´ sie aus´m DF, aber ich weiß nicht mehr von wem. (Nicht, dass ich das am Ende selbst war. Das wär´ ja was. :oops:):
Code:
uses
  WinSock;

function IsOnline: boolean;
var
  wsadata : TWsaData;
  hostent : pHostent;
begin
  Result := (InternetGetConnectedState(nil,0));

  if(Result) then
    if(WsaStartup(MAKEWORD(1,0),wsadata) = 0) then
      begin
        hostent := GetHostByName('www.microsoft.com');
        Result := assigned(hostent);

        WsaCleanup;
      end;
end;
Es würde mich interessieren, wie sich diese Funktion bei einem Router verhält. Kann das mal einer testen, der einen hat. Eine Router, meine ich.

Luckie 9. Jun 2002 14:52

Hehe, du hast Glück, du machst dich keiner Copyrightverletzung schuldig, denn so weit ich mich erinnern kann, ist sie von dir :mrgreen:.

MathiasSimmack 9. Jun 2002 20:36

Wirklich?
Peinlich, dass ich mich daran nicht erinnern kann ... aber bei dem vielen Code, den ich schon geklau... äh, gefunden habe. :oops: Ich weiß nur, dass sie in meinem WebSetup steckt. Aber das sie auch von mir war ... eyh, ich bin ja ein Genie! :idea:

Aber die wichtigere Frage: klappt´s denn nun auch mit dem Router :?:

thomasdrewermann 10. Jun 2002 18:58

Benutzt du eigentlich als router eine FLI4L version?
Wenn ja, kannst du einfach das Paket httpd herunterladen auspacken und im Verzeichnis Config die datei http mit yes versehen. Dann zeigt dein FLI4L Webserver unter der IP des Servers den Status der Verbindung an.

Ich habe mal einen Code entworfen, mit dem du den inhalt auswerten kannst, auflegen kannst, und auf wählen kannst :lol:

LINKS LEIDER DOWN :oops:

DAS PROGRAMM (NUR MIT FLI4L ROUTERN!!) @Daniel_B läuft auch unter NT/2000/2002 :o

Um es neu zu compiliren brauchst du noch eine Kompo:


Viel Spass (wenn du was mit anfangen kannst? :wink: ) :D

czapie 3. Dez 2002 21:32

WinINet?
 
Ich weiß das Thema gibts jetzt schon nen Augenblick, aber wo komme ich an diese Uses WinInet ?
Danke,
Czapie.

Daniel B 3. Dez 2002 21:35

Hi czapie,

schreib doch einfach unter "uses": WinInet! ;)

Grüsse, Daniel :hi:


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