Internetverbindung feststellen?
-
Ich dachte an Windows und mit C++ .
Das hier
http://www.ndis.com/faq/QA05040101.htm
sagt mir das es keine Lösung gibt unter WIndows
-
Hallo,
siehe hier
Edit:
Win32 Internet (WinInet)
InternetGetConnectedState
InternetCheckConnection
InternetGetConnectedState is a Wininet /IE4 function call can distinguish between modem and LAN, but can't handle complex LAN+autodial router situations. It is "offline state aware". Important: handling of the offline flage changed for IE5 -it returns TRUE for connected' even when off line, but signals the flags in the LPDWORD parameter.InternetCheckConnection is a Winnet/IE4 function call. This is meant to determine if a URL is reachable- in practice it is pretty unreliable and best voided.
Wo steht denn hier dass diese Lösung nicht für Windows geeignet ist??
LG, Micha
-
thenoname schrieb:
Hallo,
wollte mal fragen wie man eigentlich feststellt, wenn man online ist.
Ich denke man pollt irgendeinen Server, dadurch wird aber wahrscheinlich
die automatische inet Einwahl aktiviert. Wie machen das andere Programme
ohne die automatische Inet Einwahl zu aktivieren ...Gruesse,
TheNoNameDefiniere erst mal, was das Internet ist. Aus der Sicht eines Rechners kann ich prüfen, ob ein anderer Rechner erreichbar ist, indem ich beispielsweise icmp-echo-Pakete verschicke (also ping mache). Ob der andere Rechner im Internet steht oder nicht, ist mehr oder weniger definitionssache. Der andere Rechner könnte auch im lokalen Netzt hinter einem Router stehen.
Ob irgendwo in Deinem Netz eine automatische Einwahl stattfindet oder nicht, kannst Du rein technisch nicht feststellen, ohne auf das spezifische Einwahlgerät einzugehen.
-
Die Art der INet Verbindung soll egal sein. Proxy Verbindungen für HTTP scheidet hier mal aus, es soll eine normale Verbindung sein. (Router, oder DFÜ oder WLAN Hotspot)
Man könnte auf Änderungen im Netzwerk reagieren (DFÜ Einwahl, WLAN connected) aber dann fehlt noch immer die Sache mit den Routern.
Im Endeffekt ist man erst im INet, wenn z.B. ein Ping auf www.c-plusplus.net funktioniert.
Das jedoch verursacht eine automatische Einwahl bei DFÜ Netzwerk und Router.
Also schwebt mir etwas vor, was den Router nicht zum Einwählen auffordert aber einen Server im INet checken würde.
z.B. wie sieht es mit einem Broadcast aus?
Eine DNS Anfrage?
Wer legt fest, wann ein Router oder das DFÜ Netzwerk sich einwählt?
-
Der Router selbst. Wer sollte das deiner Meinung nach sonst tun?
-
Moment! Du willst im Internet prüfen, ob ein Server vorhanden ist, ohne dich ins Internet einzuklinken?
Ok, nimm das Telefon und ruf den Serverbetreiber an, ob der Server eingeschaltet ist :pGrüssli
-
Mach halt eine DNS-Abfrage von google.com und schau, ob das auch zu einer Einwahlaufforderung führt. Vorher sollte man allerdings den DNS-Cache leeren, was nicht besonders sauber ist.
Und was ist mit den von RandomAccess85 erwähnten Funktionen?
-
thenoname schrieb:
Im Endeffekt ist man erst im INet, wenn z.B. ein Ping auf www.c-plusplus.net funktioniert.
ICMP-replies könnten beim server deaktiviert sein, dann würde auch ein 'ping' fehlschlagen, obwohl der server erreichbar ist.
thenoname schrieb:
Das jedoch verursacht eine automatische Einwahl bei DFÜ Netzwerk und Router.
wenn du keine einwahl auslösen willst willst, dann musste passiv bleiben, also den netzwerkverkehr sniffen und ip-pakete analysieren (z.b. wenn welche aus 'nem class-A netz eintrudeln, bist du mit hoher wahrscheinlichkeit im internet).
-
Ich bin jetzt davon ausgegangen, das es eine Norm gibt, die Routern im Internet
vorgibt mit was für eine Anfrage sie sich einwählen.
Wie schon erkannt, könnte ein einfacher Ping bei getrennter INet Leitung vom Router grundsätzlich blockiert werden.Nur ist das generell so?
Ist das auch beim DFÜ Netzwerk so? (hab leider keins)
-
thenoname schrieb:
Ist das auch beim DFÜ Netzwerk so? (hab leider keins)
wenn du über modem ins internet gehst, dann kannste am zustand des IPCP (subprotokoll von PPP für IP-verbindungen, muss im 'open state' sein) erkennen, ob der rechner im internet ist.