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

3

我正在开发一款iPhone应用程序,需要将主机名字符串解析为IP地址字符串。例如,"MyComputer.local" -> "192.168.0.7"。我尝试了几种方法,但没有一种成功。这是我现在的代码:

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个回答

2

使用inet_ntoa代替inet_ntop

将复合语句分解一下会有所帮助:

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
IP地址: 72.35.89.108


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接