![]() |
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 |
Moin DeCodeGuru,
probier's mal so
Code:
[/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; |
Hi!
Mein erstes Posting :lol: Also schau mal, vielleicht hilft dir folgendes. ![]() Gruß Yheeky |
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 |
Moin Leute,
also ich habe das ausprobieren lassen und es hat nicht funktioniert. Leider!! :cry: Hat nochjemand eine Idee? MfG DeCodeGuru |
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.
|
Hi Thomas,
ich werde es probieren. Zitat:
Zitat:
MfG DeCodeGuru |
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:
Und in Uses muss noch WININET eingefügt werden.
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; |
@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. |
@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 ... |
Na dann prüf doch drei Seiten:
Es werden ja wohl nicht alle dieser großen Seiten gleichzeitig offline sein :mrgreen:. |
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? |
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:
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.
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; |
Hehe, du hast Glück, du machst dich keiner Copyrightverletzung schuldig, denn so weit ich mich erinnern kann, ist sie von dir :mrgreen:.
|
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 :?: |
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 |
WinINet?
Ich weiß das Thema gibts jetzt schon nen Augenblick, aber wo komme ich an diese Uses WinInet ?
Danke, Czapie. |
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