Unsigned long in ip umwandeln

djdodo

Grünschnabel
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
 
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:
#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;
}
 
Zurück