使用gethostbyname的DNS

时间:2016-03-02 18:46:53

标签: c dns gethostbyname

我在C中执行以下操作以从主机名获取IP地址。打印IP是? *?,所以它不起作用。我做错了什么?

 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 个答案:

答案 0 :(得分:1)

您假设它返回一个字符串(>)。

gethostbyname()

  

char ** h_addr_list

     

此主机的IP地址列表。虽然这是一个char **,但它是   实际上是一个伪装的结构in_addr * s数组。最后一个数组   element为NULL。

您需要使用inet_ntoa(), inet_aton(), inet_addr才能将值转换为正确的输出格式。