Announcement

Collapse
No announcement yet.

Eigene IP ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eigene IP ermitteln

    Hallo<br>
    <br>
    ich suche eine Möglichkeit, die eigenen IP-Adresse zu ermitteln. Erste Hilfe hatte ich in einem alten Beitrag gefunden, der vorschlug:<br>
    <pre>
    WORD wVersionRequested;
    WSADATA wsaData;
    char name[255];
    String ip;
    PHOSTENT hostinfo;
    wVersionRequested = MAKEWORD( 2, 0 );
    if ( WSAStartup( wVersionRequested, &wsaData ) == 0 ) {
    if( gethostname ( name, sizeof(name)) == 0){
    if((hostinfo = gethostbyname(name)) != NULL) {
    ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); } }
    WSACleanup(); }
    </pre>
    <br>
    <br>
    Soweit funktioniert auch alles. Allerdings stecken in meinem Rechner zwei Netzwerkkarten - eine für lokales Netz, eine für DSL. Leider gibt mir der o.a. Code immer eine lokale Adresse zurück.<br>
    Nur - wie komm ich an die temporäre, über die ich online bin?? Ließe sich der ipconfig Befehl dazu nutzen?<br>
    Wär prima, wenn mir jemand helfen könnte, da ich in C++ nicht so gut zu Fuß bin.<br>
    Gruß vom nebligen Bodensee,<br>
    carsten

  • #2
    Hier steht genau, wie das geht:

    http://www.bytesandmore.de/rad/cpp/snipp/sc08002.ph

    Comment


    • #3
      Ich dank Dir!<br>
      Was mir noch fehlt, ist die Möglichkeit, unter den erfragten IP-Adressen genau die herauszufinden, über die ich online bin. Gibts da vielleicht eine elegantere Möglichkeit, als zu testen, ob eine bestimmte Seite, die nur online erreichbar ist, aufgerufen werden kann?<br>
      carste

      Comment


      • #4
        Das dürfte nicht das Problem sein. Normalerweise hat man ja nur eine Internet-IP und der Rest sind die Netzwerk-IPs (können ja u.U. auch mehrere sein!). Es gibt folgende 3 mögliche IPs für ein geshlossenes Netzwerk (LAN, also kein WAN = Internet). So aknnst du es übers Ausschlussverfahren machen.

        Pseudocode:
        <PRE>

        bool IP_IST_INTERNET_IP_FRAGEZEICHEN;

        for( i = 0; i <= ANZ_GEFUNDENE_IPs; ++i )
        {
        if( ( DIE_IP[i] >= (10.0.0.0) && DIE_IP[i] <= (10.255.255.255))
        || ( DIE_IP[i] >= (172.16.0.0) && DIE_IP[i] <= (172.31.255.255))
        || ( DIE_IP[i] >= (192.168.0.0) && DIE_IP[i] <= (192.168.255.255)) )
        {
        IP_IST_INTERNET_IP_FRAGEZEICHEN = false;
        }
        else
        {
        IP_IST_INTERNET_IP_FRAGEZEICHEN = true;
        AnsiString internet_ip = DIE_IP[i]; // Konvertierungen sind natürlich falsch!
        break;
        }
        }
        printf( "Die Internet-IP ist: %s", internet_ip.c_str());
        </PRE>

        So oder ähnlich müsste es gehen. Ich habe es nicht getestet, und der Code ist natürlich syntaktisch Quark ;

        Comment

        Working...
        X