internet connection



  • hi leute!!
    ich hab eine funktion geschrieben die mir den internetstatus ermittelt!!

    ///////////////////////////////////////////////////////////////////////////////////////////////////
    // Methode "InternetConnected()" liefert ein TRUE zurück falls Internetverbindung aktiv ist
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    bool __fastcall TForm1::InternetConnected(void)
    {
       bool Result;  // Rückgabewert
    
       // WININET.DLL laden:
       HANDLE hWinInet = LoadLibrary("WININET.DLL");
       if(hWinInet == NULL)
       {
          //MessageBox(NULL,"Fehler: WININET.DLL konnte nicht geladen werden !","InternetConnected()", 0);
          return false;
       }
    
       // Zeiger auf die Funktionen besorgen:
       PF_INETGETCONNECTEDSTATE pfInternetGetConnectedState = (PF_INETGETCONNECTEDSTATE) GetProcAddress(hWinInet, "InternetGetConnectedState");
       if(pfInternetGetConnectedState == NULL)
       {
          //MessageBox(NULL, "Fehler: Bestimmung der Adresse der Funktion \nInternetGetConnectedState() fehlgeschlagen !", "InternetConnectde()", 0);
          if(hWinInet) FreeLibrary(hWinInet);
             return false;
       }
    
       // Verbidungsstatus abfragen:
       DWORD dwFlags;
       Result = pfInternetGetConnectedState(&dwFlags, 0);
       if( !Result )   // Offline
          return false;
       // Aufräumen:
       if(hWinInet)
          FreeLibrary(hWinInet);
    
       return Result;
    }
    

    hab aber nun folgendes problem....wenn ich über netzwerk mit einem computer verbunden bin, dann bekomm ich auch internetconnection aktiv zurück....wie kann man das besser lösen???

    cu surf.



  • ich bin über netzwerk verbunden, dh.: internetfreigabe ist am anderen pc aktiviert, aber ich bin nicht im internet!!!!

    cu



  • surf. schrieb:

    ich bin über netzwerk verbunden, dh.: internetfreigabe ist am anderen pc aktiviert, aber ich bin nicht im internet!!!!

    cu

    Bei mir sieht es fast genauso aus wie bei dir, ich benutze aber keine InternetFreigabe sondern setze SuSE als Firewall und Router. Also es ist ein echte Netzwerk wenn auch nur aus zwei PCs. Und wenn ich zweite Rechner mit dem WinXP hochfahre, dann ist er gleich auch mit online.

    Hey marcoo,ich verstehe dich nicht so ganz, wie kann man über Netzwerk online sein, ohne dabei online zusein???



  • ich meinte ich bin im netzwerk, aber nicht online in bezug auf internet!!! aber die funktion gibt mir trotzdem ein return true zurück...hat jemand ne bessere lösung??

    cu surf. 😉



  • Evtl. versuchst du einfach "ins Internet" zu kommen?! Wenn dabei aber dann schon automatisch eine Verbindung hergestellt werden würde hast du imho wenig Chancen 🙄



  • flenders schrieb:

    Evtl. versuchst du einfach "ins Internet" zu kommen?! Wenn dabei aber dann schon automatisch eine Verbindung hergestellt werden würde hast du imho wenig Chancen 🙄

    was is wenn ich net ins internet will...dann habn wir den salat!
    ich könnte ja www.microsoft.com anpingen und schaun ob ich ne antwort bekomme? oder fällt dir was besseres ein??

    cu



  • surf. schrieb:

    was is wenn ich net ins internet will...dann habn wir den salat!

    Das verstehe ich jetzt leider nicht 😕

    surf. schrieb:

    ich könnte ja www.microsoft.com anpingen und schaun ob ich ne antwort bekomme? oder fällt dir was besseres ein??

    Sowas in der Art hatte ich gemeint 😉



  • flenders schrieb:

    surf. schrieb:

    was is wenn ich net ins internet will...dann habn wir den salat!

    Das verstehe ich jetzt leider nicht 😕

    *g* ja wenn ich den pc starte und er hat eine netzwerkverbindung, dann schlägt diese obrige funktion fehl!! da ich mit dem server(wo ich internetfreigabe aktiviert habe) noch nicht im internet bin!!!

    surf. schrieb:

    ich könnte ja www.microsoft.com anpingen und schaun ob ich ne antwort bekomme? oder fällt dir was besseres ein??

    Sowas in der Art hatte ich gemeint 😉

    wie ping ich ne seite oder server an...und wie kann ich die antwort auswerten??

    wäre erfreut um eine hilfe!

    cu



  • Suchen hilft meistens. 😉 Das gibt dir z.B. folgenden Link: http://www.c-plusplus.net/forum/viewtopic.php?t=62371&highlight=ping



  • @WebFritzi:
    ist das ne gute lösung mit dem anpingen? den internet status zu bekommen? wenn die obrige lösung nicht korrekt arbeitet? wie würdest du das machen?

    cu!



  • Das erstmal ausprobieren!



  • welche parameter soll ich da übergeben vom hauptprog:

    int icmpProto::ping( char *host, int size, int timeout, int count, int pause )
    

    danke erst mal!!
    cu



  • Tja, leider ist das eine Memberfunktion einer Klasse, und der Urheber hat zu wenig Informationen über andere Members hinterlassen. Vielleicht schaust du einfach mal in der Suche nach anderen Quellen.



  • sind doch eigentlich selbsterklärend... 🙄



  • flenders schrieb:

    sind doch eigentlich selbsterklärend... 🙄

    für mich nicht!! was übergibt man da????

    bitte um hilfe!
    cu



  • Also für mich sieht das so aus:

    int icmpProto::ping( char *host, int size, int timeout, int count, int pause )

    host = Host an der ein Ping geht
    size = Packet Größe in Bytes
    timeout = wie lange muß auf Antwort gewartet werden, ob in ms, sek, oder min weiss ich nicht
    count = wieviele Packeten sollen geschickt werden
    pause = mit welchem Interval sollen die Packete gesendet werden

    oder fehlt jemanden was besseres ein???



  • need help!





  • Aha, man kann also anhand der Rückgabewerte von GetInternetConnectedState() feststellen, was für eine Verbindung besteht.

    @flenders: Wo ist da was selbsterklärend? Die Parameter der Funktion vielleicht, aber über die habe ich nichts geschrieben. Ich meinte die Klassenmembers. Und davon werden in der Funktion ein paar verwendet, und wo ist da was selbsterklärend?



  • @MASTER-Tim: das bringt mir nix!! da getinternetconnection nicht funktioniert wenn ich über netzwerk per internetfreigabe im internet bin!!
    erklärung:
    // GetInternetConnected() kapselt den Aufruf der API-Funktion
    // InternetGetConnectedState() aus der wininet.dll. Diese Funktion
    // liefert true auch wenn der Rechner nur an ein TCP/IP-Netzwerk
    // angeschlossen ist, bzw wenn ein Proxy-Server konfiguriert ist.
    // Der Rückgabewert 'true' ist daher mit Vorsicht zu geniessen: es
    // heisst noch lange nicht, dass die Verbindung zum Internet
    // tatsächlich besteht. Sollte die GetInternetConnected() also 'true'
    // liefern, könnte je nach Einzelfall eine Absicherung (z.B. durch
    // das Senden eines Pings zum Zielrechner) durchaus sinnvoll sein.

    cu


Anmelden zum Antworten