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