将主机名字符串解析为IP字符串

时间:2015-01-28 23:03:11

标签: ios objective-c

我正在制作iPhone应用程序,我需要将一个主机名字符串解析为一个IP地址字符串。例如," MyComputer.local" - > " 192.168.0.7&#34 ;.我尝试过做一些事情,但没有一个有效。这就是我现在所拥有的:

struct hostent *hostentry;
hostentry = gethostbyname("MyComputer.local");
char *ipbuf = NULL;
inet_ntop(AF_INET, hostentry->h_addr_list[0], ipbuf, hostentry->h_length);
ipAddress = [NSString stringWithFormat:@"%s" , ipbuf];

出于某种原因,它总是在inet_ntop上崩溃,是的,我使用现有的主机名进行测试。谢谢!

1 个答案:

答案 0 :(得分:1)

取代inet_ntop试试inet_ntoa

它有助于打破复合语句:

struct hostent *hostentry;
hostentry = gethostbyname("zaph.com");
NSLog(@"name: %s", hostentry->h_name);

struct in_addr **addr_list;
addr_list = (struct in_addr **)hostentry->h_addr_list;
char* ipAddr = inet_ntoa(*addr_list[0]);

NSString *ipAddress = [NSString stringWithFormat:@"%s", ipAddr];
NSLog(@"ipAddress: %@", ipAddress);

输出:

  

姓名:zaph.com
  ipAddress:72.35.89.108