ip adressen ausgabe



  • Hallo!
    Hab wiedermal ein kleines Problem! Will meine IP-Adressen auslesen und dann weiterverarbeiten. Hab 2 Netzwerkkarten im Computer und hab folgendes Beispiel getestet:

    char *ipad[80];
    ...
    for (int i = 0; phe->h_addr_list[i] != 0; ++i) 
    {
       struct in_addr addr;
       memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));        
       ipad[i]=inet_ntoa(addr);     
    } 
    printf ("%s\n",ipad[0]);
    printf ("%s\n",ipad[1]);
    

    Wenn ich die Ausgabe wie oben anwende, bekomme ich zweimal die gleiche IP - Adresse ausgegeben; wenn ich die Ausgabe mit

    printf ("%s\n",ipad[i];
    

    in die Schleife setze, bekomm ich die richtigen Adressen ausgegeben.
    Was kann ich das jetzt machen, dass ich außerhalb der Schleife die IP - Adressen verwenden kann? Bzw. warum ist das so, wie es ist??



  • inet_ntoa
    The Windows Sockets inet_ntoa function converts a network address into a string in dotted format.

    char FAR * inet_ntoa (
    
        struct in_addr in   
       );
    

    Return Values
    If no error occurs, inet_ntoa returns a char pointer to a static buffer containing the text address in standard ".'' notation. Otherwise, it returns NULL. The data should be copied before another Windows Sockets call is made.

    ----------------------
    Fazit:
    strcpy() benutzen!

    ....
    John



  • Na wenn mir jetzt auch noch jemand verrät, wie das funktioniert (wie & wo ich strcpy anwenden soll,...), wär ich sehr dankbar.



  • z.B. in der Schleife:

    char *temp = inet_ntoa(addr);
    iPad[i] = (char *)malloc(strlen(temp) + 1);
    strcpy(iPad[i], temp);
    


  • Funkt super so!! ----> Danke Danke


Anmelden zum Antworten