我在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);
答案 0 :(得分:1)
您假设它返回一个字符串(不>)。
char ** h_addr_list
此主机的IP地址列表。虽然这是一个char **,但它是 实际上是一个伪装的结构in_addr * s数组。最后一个数组 element为NULL。
您需要使用inet_ntoa(), inet_aton(), inet_addr才能将值转换为正确的输出格式。