| 
| Autor | Beitrag |  
| Pipecheck Hält's aus hier
 Beiträge: 7
 
 
 
 
 | 
Verfasst: Sa 22.06.02 22:06 
 
Kann mir bitte jemand auf EINFACHE weise erklären wie ich checke ob eine Internetverbindung besteht?
Es soll einfach nur ausgegeben werden ob im Netz, oder nicht...
 ich hoffe, das ist ein nicht ganz so alter hut.
 greets Pipecheck
 _________________ auf grund mehrer beschwerden ist hier vor erst nix zu sehen
 |  |  |  
| Klabautermann 
          
  Beiträge: 6366
 Erhaltene Danke: 60
 
 Windows 7, Ubuntu
 Delphi 7 Prof.
 
 | 
Verfasst: So 23.06.02 00:49 
 
Hallo,
 doch das ist ein alter Hut und die Antwort ist immer wieder enttäuschend. 
 Es geht nicht. Zumindest nicht, wenn man ausschließen will, das der Test nicht selber eine Verbindung aufbaut, wenn der Rechner so konfiguriert ist, dass er bei anforderung eine Verbindung aufbauht.
 Ein weiteres Problem ist, das der Netzwerkzugriff unter der Windows 9x reihe anders realisiert ist als unter der NT Reihe.
 Also wie gesagt. Die universelle Lösung git es meines wissens nicht und wenn doch dann wird sie sicherlich nicht einfach sein (allein wegen der unterscheidung der Windowse). 
 Aber ich lasse mich gerne verbessern   .
 Gruß
 Klabautermann |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: So 23.06.02 01:12 
 
Moinsen!
 Also ich verwende dazu die Funktion InternetGetConnectedState  aus der Unit WinInet .
 Kleines Beispiel:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | uses ... WinInet, ... ;
 ...
 
 if InternetGetConnectedState(nil, 0) then
 ShowMessage('Ja, logen doch')
 else
 ShowMessage('Nööö, doch nicht');
 ...
 |  Hat bis dato auch immer funktioniert.
 Jedoch konnte ich nicht testen, ob dabei eine Verbindung aufgebaut wird. Habe es immer nur hinter einem Router testen können.
 Doch ich lasse mich auch gerne belehren.     Grüße
 Torsten |  |  |  
| Pipecheck  Hält's aus hier
 Beiträge: 7
 
 
 
 
 | 
Verfasst: So 23.06.02 13:02 
 
hehe, Torsten ist mein Gott  _________________ auf grund mehrer beschwerden ist hier vor erst nix zu sehen
 |  |  |  
| Stefan Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 27.06.02 16:59 
 
Servus,
 also dieses InternetGetConnectedState hat bei mir den Haken, dass es nur wenn ich über eine DFÜ-Verbindung online gehe funktioniert. Gehe ich z.B. mit einer älteren T-online Software oder durch ICS Software wie KEN ins Netz wird immer online angezeigt, auch wenn ich offline bin.
 
 Ich habs auch schon mit der Abfrage der Regestry versucht, die ja auch erkennt, ob man online bzw offline ist. Hat aber auch nix gebracht.
 
 Vielleicht weiss ja hier einer was...
 |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: Do 27.06.02 17:54 
 
Moinsen!
 Wo fragst Du das denn in der Registry ab?
 Wenn die Registry das kennt (so wie Du schreibst), dann sollte man es doch auch abfragen können.
 
 Grüße
 
 Torsten
 |  |  |  
| Stefan Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 27.06.02 19:30 
 
Hier ist der Code. Hab ich mal irgendwo gelesen, und da das mit dem InternetGetConnectedState bei mir nicht eindeutig funzt einfach ausprobiert. Leider kenn ich mich mit der Regestry nicht so gut aus, dass ich sagen kann, ob sich an der Stelle wies im Code steht überhaupt der online/offline Eintrag befindet.
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 
 | Function IsConnected : Boolean;var reg: TRegistry;
 buff: dword;
 begin
 reg := tregistry.Create ;
 Reg.RootKey := HKey_local_machine;
 if reg.OpenKey('\System\CurrentControlSet\Services\RemoteAccess',false) then begin
 reg.ReadBinaryData('Remote Connection',buff,sizeof(buff));
 result := buff = 1;
 reg.CloseKey ;
 reg.Free ;
 end;
 end;
 |  und so frag ichs ab:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 
 | procedure TForm2.Button2Click(Sender: TObject);begin
 
 If IsConnected = true then begin
 StaticText1.Font.Color := clgreen;
 StaticText1.Caption := ' online ';
 end
 else begin
 StaticText1.Font.Color := clred;
 StaticText1.Caption:=' offline ';
 end;
 end;
 |  Also, Torsten, was meinst du dazu? |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: Do 27.06.02 19:47 
 
Moinsen!
 Hmm, das ist meiner Meinung nach nicht das Richtige.
 Zum einen schreckt ja schon der Name RemoteAccess  ab. Es geht dabei wohl eher darum, ob remote access zugelassen (eingeschaltet) wird.
 In meiner Registry gibt es noch nicht mal diesen Wert. Ich wäre also offline beim Schreiben dieses Textes    Tja, dennoch werde ich mich mal weiter erkundigen.
 Nur schade, dass meine Funktion nicht arbeitet. Jedenfalls nicht immer. Gut zu wissen.
 Grüße
 Torsten |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: Do 27.06.02 19:59 
 
Moinsen!
 Mir fällt da gerade noch ein anderer Weg ein.
 Ist bestimmt nicht ganz sauber, sollte aber klappen.
 Wenn also obiges Beispiel nicht klappt, dann besteht noch immer die Möglichkeit, einen Verbindungsaufbau zu einer bekannten IP im Netz zu versuchen.
 Also beispielsweise über TClientSocket zu einer bekannten IP (da bietet sich eine Webseite über Port 80) an.
 Das Problem ist nur, dass auch diese IP mal nicht erreichbar sein kann, obwohl man selber online ist. (auch Server stürzen mal ab    )
 Grüße
 Torsten |  |  |  
| Stefan Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 27.06.02 20:06 
 
Also bei mir ist dieser Eintrag REMOTEACCESS gibts bei mir schon. Aber wie gesagt: Ich habe keine Ahnung von der Windows Regestry (hat micht immer irgendwie angeschreckt) und leider kein Buch etc. darüber zur Hand.
 Haha    ! Grade wollte ich posten, da bist du mir zuvor gekommen!
 Das hab ich mir auch schon überlegt. Doch ich meine ich hätte mal gehört, dass sich manche Internet Server auf einen Ping nicht zurückmelden. Dennoch haben gerade 100% der Adressen, die ich versucht habe anzupingen reagiert. Man sollte halt populäre nehmen, wie www.gmx.de  oder www.google.de . Die sind ja (fast) immer online.
 Ich probiers gleich mal richtig aus. Bis denn. |  |  |  
| Arakis 
          Beiträge: 344
 
 
 
 
 | 
Verfasst: Do 27.06.02 21:03 
Titel: 2 Möglichkeiten
 
Mir fallen da zwei Möglichkeiten ein: 1. Abchecken, ob man eine Internet-IP hat, wenn man einen leeren String zurück bekommt, dann ist man halt nicht online. Wie man die Internet-IP abfragt, habe ich gerade in das Internet-FAQ gepostet.
 2. Möglichkeit wäre über diese Komonente:
dateien.desk-work.de...enten/tmswebconn.zip Bis dann
 _________________ Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
 Entwickler von SpaceTrek: The New Empire - Siehe Hompage !
 |  |  |  
| FriFra 
          Beiträge: 557
 
 Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
 D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
 
 | 
Verfasst: Do 27.06.02 23:15 
 
Das ganze vorhaben ist Unmöglich! Wie soll man auch zwischen Intra und Internet unterscheiden ohne auf externe Resourcen zuzugreifen??? Dieser Zugriff führt allerdings bei den meisten Verbindungsarten zu einer Einwahl, was das ganze sinnlos macht.
 Die Einzige Lösung wäre, man würde einen Port reservieren welcher bei allen Verbindungsarten nicht zum Verbindungsaufbau führt. Dann bräuchte man nur noch über diesen Port einen Connect auf einen externen Server zu versuchen. Aber leider wird das nicht gehen, da sich dann alle an diesen Standart halten müssten....
 |  |  |  
| Arakis 
          Beiträge: 344
 
 
 
 
 | 
Verfasst: Do 27.06.02 23:18 
Titel: Sag niemals Nie!
 
Sag niemals Nie!
 Ich probiere dass morgen mal bei mir in der Firma aus.
 Bis dann
 _________________ Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
 Entwickler von SpaceTrek: The New Empire - Siehe Hompage !
 |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: Fr 28.06.02 08:22 
 
Moinsen!
 OK, das wäre die eine Möglichkeit.
 Doch ich habe da noch was im Kopf. Meines Erachtens nach können die Winshoes Komponenten auch Abhilfe schaffen. Die konnten, so jedenfalls meine Erinnerung, genau feststellen, ob online oder offline. Ein Blick in den Code wäre mal eine Möglichkeit.
 Zu finden bei Torry.
 
 Grüße
 
 Torsten
 |  |  |  
| FriFra 
          Beiträge: 557
 
 Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
 D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
 
 | 
Verfasst: Fr 28.06.02 09:11 
 
Das können diese Kompos auch nicht, glaub mir! Ich habe selbst ein Lan mit Verbindung nach aussen. Woher wollen denn die Compos wissen, wann der Router online ist? Ohne connect nach aussen geht es nicht, und der bewirkt nun mal meistens einen Verbindungsaufbau... |  |  |  
| Sephiroth 
          Beiträge: 102
 
 
 
 
 | 
Verfasst: Fr 28.06.02 10:56 
 
Hmm mal zu dem Lösungsansatz mit dem TClientsocket und TServerSocket. Ich würde das Problem dann folgendermaßen lösen.
Ich versuche über das Internet auf meinen eigenen Server (also 127.0.0.1) zu connecten. Wenn man nämlich bei der Clientsocket nur den "Host" angibt versucht er soweit ich weiss alles übers Internet zu senden. Erst wenn man bei "Address" eine IP eingibt sendet ers Lokal.
 Somit könnte man doch feststellen ob man online ist eigentlich...
 
 Werd ich mal am Wochenende ausprobieren...
 
 Was haltet ihr davon?
 |  |  |  
| FriFra 
          Beiträge: 557
 
 Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
 D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
 
 | 
Verfasst: Fr 28.06.02 11:35 
 
Nicht ganz richtig...
 Wenn ein Hostname angegeben wird, wird eine DNS Auflösung gemacht, diese führt i.d.R. zum Verbindungsaufbau. Gibt man eine IP an gibt es auf jeden Fall keine DNS Auflösung.
 Nun müsste man aber versuchen zu einem externen Host zu connecten um wirklich sicher zu sein, das man offline ist. Und bei genau diesem Versuch scheitert der Ansatz, da dies meist zum Verbindungsaufbau führt! 
 	  | Zitat: |  	  | Ich versuche über das Internet auf meinen eigenen Server (also 127.0.0.1) zu connecten. | 
 Das funktioniert nicht, da 127.0 bzw 192.168 private IP's sind, welche Du übers Internet nie erreichen wirst! Das geht nur mit der IP die Du vom ISP bekommst. |  |  |  
| Torsten 
          Beiträge: 160
 
 
 
 
 | 
Verfasst: Fr 28.06.02 12:42 
 
Hmm, wenn also ein Verbindungsaufbau gemacht wird, dann ist das freilich auch keine Lösung. Schade eigentlich. War nur eine Idee.
 Und die Winshoes können das also auch nicht. Wie dumm.
 Aber wir finden bestimmt eine Lösung, gemeinsam.    Grüße
 Torsten |  |  |  
| FriFra 
          Beiträge: 557
 
 Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
 D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
 
 | 
Verfasst: Fr 28.06.02 16:25 
 
Das kann nur funktionieren, wenn man für seine Verbindung (Router. Modem etc.) jeweils eine Rolle definieren könnte, wo über einen bestimmten Port nur bei bestehender Verbindung Pakete durchgelassen werden. Nur der Router "weis" ob er online ist...
 Nochwas zu Routern. Ich habe ein Tool  geschrieben, welches mit sehr vielen gängigen Routern zusammenarbeitet und deren Status ausliest ohne einen Verbindungsaufbau auszulösen. Die Verbindungsdaten werden dann auch in die Registry geschrieben. |  |  |  
| ArnF Hält's aus hier
 Beiträge: 8
 
 
 
 
 | 
Verfasst: Fr 13.09.02 20:51 
 
Ich hab mal eine Komponente gefunden, mit der der Status einfach überprüft wurde. Mit einem Timer wird ständig die eigene IP-Adresse abgefragt. Hat man eine Adresse, so ist man online.
Hab es nicht ausprobiert und hab von Netzwerken nicht allzuviel Ahnung, aber könnte doch funktionieren.
 _________________ Das Leben ist ein Sch...-Spiel, aber die Grafik ist cool.
 |  |  |  |