2016-03-02 75 views
1

我在C中執行以下操作來從主機名獲取IP地址。它打印的IP是? * ?,所以它不起作用。我究竟做錯了什麼?使用gethostbyname的DNS

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才能將值轉換爲正確的輸出格式。