我目前正在使用此代码
NSHost *host = [NSHost hostWithAddress:hostname];
if (host == nil) {
host = [NSHost hostWithName:hostname];
if (host == nil) {
[self setMessage:@"Invalid IP address or hostname:"];
return;
}
}
为我正在开发的网络应用程序检索我的 IP 地址,但是我知道 NSHost 是一个私有 API,将被拒绝。任何人都可以帮助我在不使用 NSHost 的情况下使用此代码产生相同的结果吗?我不确定从哪里开始。
编辑:
按照下面看起来该死的近乎完美的建议,我已将此代码添加到我的应用程序中以代替上面的代码
Boolean result;
CFHostRef hostRef;
CFArrayRef addresses;
NSString *hostname = @"www.apple.com";
hostRef = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)hostname);
if (hostRef) {
result = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL); // pass an error instead of NULL here to find out why it failed
if (result == TRUE) {
addresses = CFHostGetAddressing(hostRef, &result);
}
}
if (result == TRUE) {
NSLog(@"Resolved");
} else {
NSLog(@"Not resolved");
}
我已经删除了第 4 行(因为我已经从其他地方获得了这些信息),但是我收到了基于 CFHostRef 未声明的错误。我将如何解决这个问题?这似乎是我唯一的大障碍,因为其他错误只是基于之后无法看到 hostRef。编辑:从头开始,我也未声明 kCFHostAddresses。