Я сейчас использую этот код
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? Я не совсем уверен, с чего начать.
EDIT:
Следуя советам, которые кажутся чертовски почти идеальными ниже, я добавил этот код в свое приложение вместо кода выше
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 необъявленные.