getHostByName Frage dazu
-
hi,
ich hab die getHostByName() Funktion benutzt um mir einen Hostnamen aufzulösen, auch mit erfolg. Aber ich finde mein Weg kompliziert und wollte Fragen ob das auch einfacherer geht?
hier mal meine Variante, wichtig ist, das gnze muss sich mit dem gcc (also in C, nicht C++, kompilieren lassen).
struct hostent *server; server = gethostbyname("localhost"); char serverip[20]; sprintf(serverip, "%u.%u.%u.%u", (unsigned char) server->h_addr_list[0][0], (unsigned char) server->h_addr_list[0][1], (unsigned char) server->h_addr_list[0][2], (unsigned char) server->h_addr_list[0][3]); printf("%s\n", serverip);
-
Die Funktion heißt man: gethostbyname! Groß- und Kleinschreibung macht in C einen Unterschied.
gethostbyname ist obsolete und man sollte lieber man: getnameinfo benutzen. Die Benutzung sollte auch ein bisschen schöner sein.
-
Ist eigentlich schon der einfachste Weg, wenn du dir die IP selbst schreiben willst. Allerdings kann du dir die IP auch von
inet_ntop
schreiben lassen.struct hostent *server; char ip [INET_ADDRSTRLEN]; server = gethostbyname("localhost"); inet_ntop (AF_INET, server->h_addr_list [0], ip, INET_ADDRSTRLEN); printf ("%s\n", ip);