2016-03-02 9 views
1

Я делаю следующее в C, чтобы получить ip-адрес из имени хоста. Он печатает IP? * ?, поэтому он не работает. Что я делаю не так?DNS с использованием 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); 

ответ

1

Вы полагаете, что он возвращает строку (которая не случай).

gethostbyname()

символ ** h_addr_list

список IP-адресов для данного хоста. Хотя это char **, это действительно массив скрытой структуры in_addr * s. Последний массив элемент NULL.

Чтобы преобразовать значение в нужный формат вывода, необходимо использовать inet_ntoa(), inet_aton(), inet_addr.

 Смежные вопросы

  • Нет связанных вопросов^_^