2016-03-02 1 views
1

Je fais ce qui suit en C pour obtenir l'adresse IP d'un nom d'hôte. Il imprime IP est? * ?, alors ça ne marche pas. Qu'est-ce que je fais mal?DNS using gethostbyname

char * targetHostName = server_proxy_hostname; 
char * targetPort = server_proxy_port; 
struct hostent *info; 
info = gethostbyname(targetHostName); 
char ** ipAddresslist; 
ipAddresslist =info -> h_addr_list; 
char * ipAddress = ipAddresslist[0]; 

printf("IP is %s\n", ipAddress); 

Répondre

1

Vous assumez qu'il retourne une chaîne (qui est pas le cas).

gethostbyname()

char ** h_addr_list

Une liste d'adresses IP pour cet hôte. Bien qu'il s'agisse d'un char **, c'est vraiment un tableau de struct in_addr * s déguisé en . Le dernier élément de tableau est NULL.

Vous devez utiliser inet_ntoa(), inet_aton(), inet_addr pour convertir la valeur au format de sortie approprié.