Entwickler-Ecke
Internet / Netzwerk - Online oder was...?
Logi5 - Sa 12.02.05 18:57
Titel: Online oder was...?
Liebe Delphi-Gemeinde,
ich beschäftige mich seid einiger Zeit mit einem Problem.
Ich suche eine funktion, die eine Variable auf true oder false setzt, je nach dem, ob der rechner im Web ist oder nicht.
Ich habe bereits eine Funktion, jedoch hat diese den Nachteil, das sie eine Fehlemeldung erzeugt, wenn der Rechner nicht online ist.
Kann mir da jemand weiterhelfen?
Sprint - Sa 12.02.05 19:05
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var dwConnectedStateFlags: DWORD; begin
if InternetGetConnectedState(@dwConnectedStateFlags, 0) then if (dwConnectedStateFlags or INTERNET_CONNECTION_MODEM) = dwConnectedStateFlags then begin ShowMessage('Verbindung besteht. Vielleicht auch nicht. Es gibt keine 100%ig Lösung für deine Frage.'); end;
end; |
Es gibt keinen sicheren Weg, um festzustellen ob jemand Online ist oder halt nicht.
retnyg - Sa 12.02.05 19:11
das würde ich nicht sagen. habe mal einen source gesehen zum auflisten der netzwerkadapter, wenn der netzwerkadapter WAN eine ip hat is man auch online.
alternativ könnte man ja folgenden einfachen trick machen: einen host anpingen der immer online is wie z.b.
http://www.google.com
kommt ein reply so hat man ne verbindung
Delete - Sa 12.02.05 19:13
ja und wenn du dial on demand hast wählt er sich beim pingen erst ein und ist dann online....das geht also auch nicht!
retnyg - Sa 12.02.05 19:15
achso, der anwender soll die überprüfung ned mitbekommen... ja dann wirds schon schwerer.
Sprint - Sa 12.02.05 19:17
| retnyg hat folgendes geschrieben: |
| wenn der netzwerkadapter WAN eine ip hat is man auch online. |
Tja, und wenn du deine Internet Daten über LAN von einem anderen PC/Server beziehst, dann bringt dir das auch nichts.
| Zitat: |
| alternativ könnte man ja folgenden einfachen trick machen: einen host anpingen der immer online is wie z.b. http://www.google.com kommt ein reply so hat man ne verbindung |
Das kann aber den unschönen Nebeneffekt haben, dass das DFÜ Einwahlfenster aufspringt.
Logi5 - So 13.02.05 01:48
ok, ich kann also nicht sicher feststellen, ob der rechner im Internet ist.
Dann formuliere ich das ganze anders:
Das Programm soll eine funktion haben, die ei update runterläd. Ich schreibe die funktion einfach mal im Klartext
funktion ob online: Ja oder nein
wenn ja ( auch wenns nicht sicher ist) dann
lade Datei Update.zip vom Server
http://www.irgendwas.de (wenn sie neuer ist, als die, die auf dem Rechner ist)
sollte dieses laden fehl schlagen, gebe keine Fehlermeldung aus, sondern beende das ganze einfach.
Das ganze könnte mit einem Timer alle 10 minuten oder so erneut gemacht werden
Sprint - So 13.02.05 02:00
Das ist ja eine Frage, die schon manch ein Programmierer hatte. Ich würde in dein Programm ein Dialog machen, wo der Benutzer selber Einstellungen vornehmen kann. z.B. ob automatisch oder manuell nach Updates geschaut werden soll.
Beim ersten Aufruf von deiner Updatefunktion, würde ich eine MessageBox einbleden. Wo der Benutzer darüber informiert, das für die Suche nach einen Update eine Internetverbindung bestehen muss. Außerdem würde ich dieser MessageBox eine CheckBox verpassen. Damit der Benutzer die Möglichkeit hat, das beim nächsten Update diese MessageBox wieder erscheint oder es halt gleich weitergeht. Dann sieht dein Programm auch sehr professionell aus und der Benutzer freut sich, das er selber mit entscheiden darf.
Delete - So 13.02.05 11:39
Ehrlich gesagt.
Wenn dein Programm versuchen würde zu prüfen ob ich online bin und sich meine Verbindung dadurch automatisch einwählt würde ich dein prog sofort löschen und weitere schritte einleiten...
Machs mit nem dialog und gut!
Kidix
reepo2k - So 13.02.05 11:47
Wäre es nicht besser erst zu überprüfen, ob eine neue Version online ist und nur wenn eine neue Version verfügbar ist diese runter zu laden?
Würd nämlich viel Traffic werden, wenn das Programm bei jedem Start ne neue Version runterkädt.
MfG: reepo2k
Delete - So 13.02.05 11:49
und ob er sich dabei auf der legalen ebene befindet mag ich bezweifeln...
ich sagte ja wenn sein programm erst meine verbindung aufbaut und dann auch noch autmatisch was runterläd würd ich anzeige erstatten!
Logi5 - Mo 14.02.05 02:05
nu mal halblang...
jeder popelige Virenscanner updatet sich automatisch. Und Windows Updates kommen auch einfach so, wenn man die Funktionen nicht abschaltet. Hast du die schon alle Verklagt? *lol
die Funktion ist natürlich auch bei meinem Programm abschaltbar..
Jede .exe auf einem Computer stellt eine potentielle Bedrohung da. Also was sollen diese Unterstellungen?
oPPi - Mo 14.02.05 13:18
Hy wie wär's mit sowas:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Uses WinInet;
function IsConnectedToInternet : boolean; begin result := (InternetGetConnectedState(nil, 0)) end;
procedure TForm1.Button1Click(Sender: TObject); begin if IsConnectedToInternet then ShowMessage('Verbunden.') else ShowMessage('nicht Verbunden'); end; |
gefunden bei:
http://www.SwissDelphiCenter.ch
Du kannst natürlich anstatt ShowMessage auch ein Editfeld / CheckBox oder ähnliches verwenden.
wham1010 - Mi 27.07.05 13:48
Also, bei dem hier schreibt er mir IMMER "Nicht verbunden" hin - obwohl ich definitiv mit dem Internet verbunden bin!
(Router + Breitband)
oPPi hat folgendes geschrieben: |
Hy wie wär's mit sowas:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Uses WinInet;
function IsConnectedToInternet : boolean; begin result := (InternetGetConnectedState(nil, 0)) end;
procedure TForm1.Button1Click(Sender: TObject); begin if IsConnectedToInternet then ShowMessage('Verbunden.') else ShowMessage('nicht Verbunden'); end; |
gefunden bei: http://www.SwissDelphiCenter.ch
Du kannst natürlich anstatt ShowMessage auch ein Editfeld / CheckBox oder ähnliches verwenden. |
blaueled - Mi 27.07.05 18:08
nimm einen TClientsocket und als IP
http://www.google.de (oder was für dich passt) port 80 und
bei einem Fehler inet := false und den Errorcode auf 0 setzen.
bei Verbindung inet := true und verbindung beenden.
Arne
Experience1986 - Mi 17.08.05 15:11
Hi,
das mit dem ClientSocket hab ich noch gar nicht in betracht gezogen. interessante und einfache idee.
Der Code der oben schonmal gepostet wurde:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function IsConnectedToInternet : boolean; begin result := (InternetGetConnectedState(nil, 0)) end;
procedure TForm1.Button1Click(Sender: TObject); begin if IsConnectedToInternet then ShowMessage('Verbunden.') else ShowMessage('nicht Verbunden'); end; |
Kan bei Router nicht funktionieren, da dieser Code nur prüft ob eine DFÜ verbindung besteht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!