tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1735
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    djdodo djdodo ist offline Grünschnabel
    Registriert seit
    Sep 2004
    Beiträge
    2
    Hi Leute!

    Folgendes:

    Ich will einen Ip-Adressbereich anpingen.
    Dazu hab ich eine Startadresse und eine Endadresse.
    Die Hab ich dann jeweils in ihre segmente zerlegt, und dann in einen unsigned long umgewandelt (da hat mir jmd. geholfen).
    So kann ich die in einer Schleife einfacher hochzählen.
    Doch um dann mit jeder Adresse eine Funktion aufzurufen, brauch ich die Adresse als char [15] im Muster 192.168.1.1.

    Wie kann ich das wieder umwandeln?

    Oder gibt es von vornherein eine einfachere Methode, einen IP-Bereich zu pingen?


    Bitte Antwort an djdodoandthedoctor@gmx.de

    Dringend!

    Danke!

    Dodo
     

  2. #2
    C Coder C Coder ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    172
    Vielleicht hilft das:
    http://www.zotteljedi.de/doc/socket-tipps/insider.html

    unter: IP-Adressen hochzählen

    oder das:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    unsigned long ip; //Hier ist deine IP
    char szIP[15]; //Hier gleich auch
    int a,b,c,d;
    a = (ip&0x000000FF);
    b = (ip&0x0000FF00)>>8;
    c = (ip&0x00FF0000)>>16;
    d = (ip&0xFF000000)>>24;
    sprintf(ip_szIP, "%d.%d.%d.%d", a,b,c,d);
     

  3. #3
    Registriert seit
    Nov 2002
    Ort
    Altdorf bei Nürnberg
    Beiträge
    3.027
    Hi djdodo,

    hier gibt es die Struktur in_addr und die Funktionen inet_aton, die einen String in einen Long Wert umwandelt, und inet_ntoa, das Gegenstueck dazu.

    Ein kleines Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    #include <stdio.h>
    #include <arpa/inet.h>
     
    int main(int argc, char *argv[])
    {
            char ipaddr[16];
            struct in_addr addrst;
     
            printf("Bitte gebe eine IP Adresse ein: ");
            scanf("%15s", ipaddr);
            printf("\n");
     
            if (!inet_aton(ipaddr, &addrst)) { /* inet_aton gibt 0 zurueck, wenn es sich
                                                  um eine ungueltige IP Adresse handelt */
                    printf("%s ist keine gueltige IP Adresse\n",
                           ipaddr);
                    return 1;
            } else {
                    printf("%s ist eine gueltige IP Adresse\n",
                           inet_ntoa(addrst));
            }
     
            return 0;
    }
     

  4. #4
    djdodo djdodo ist offline Grünschnabel
    Registriert seit
    Sep 2004
    Beiträge
    2
    @C Coder

    Vielen Dank!

    Dein Code hat mir sehr geholfen!

    Es gibt doch noch Hoffnung, das Prog fertig zu kriegen!
     

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 24.11.10, 11:28
  2. Ein char in long int umwandeln
    Von lalalala im Forum C/C++
    Antworten: 14
    Letzter Beitrag: 19.11.10, 19:50
  3. Unsigned long - Fehler
    Von Philipp9494 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 05.09.08, 22:42
  4. String in Long umwandeln
    Von chickenwings im Forum Java
    Antworten: 4
    Letzter Beitrag: 06.10.06, 15:14
  5. Antworten: 0
    Letzter Beitrag: 22.11.05, 16:31