-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// …
NSLog(@"ips: %@", [self hostAddressesFromName:@"www.macuser.de"]);
// …
}
-(NSArray*)hostAddressesFromName:(NSString*)name
{
// …
if([name length] < 1)
{
return nil;
}
// …
CFStringRef stringRef = (__bridge CFStringRef)name;
// …
CFHostRef hostRef = CFHostCreateWithName(kCFAllocatorDefault, stringRef);
// …
if(hostRef == NULL)
{
return nil;
}
// …
Boolean done = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL);
if(done == FALSE)
{
return nil;
}
// …
CFArrayRef arrayRef = CFHostGetAddressing(hostRef, &done);
if(done == FALSE)
{
return nil;
}
// …
NSMutableArray *mutableArray = [NSMutableArray array];
if(mutableArray == nil)
{
return nil;
}
// …
CFIndex count = CFArrayGetCount(arrayRef);
// …
for(CFIndex nIndex = 0; nIndex < count; nIndex++)
{
// …
struct sockaddr *addr = (struct sockaddr*)CFDataGetBytePtr(CFArrayGetValueAtIndex(arrayRef, nIndex));
if(addr == nil)
{
continue;
}
// …
char address[INET6_ADDRSTRLEN];
// …
getnameinfo(addr,
addr->sa_len,
address,
INET6_ADDRSTRLEN,
nil,
0,
NI_NUMERICHOST);
// …
NSString *string = [NSString stringWithCString:address
encoding:NSUTF8StringEncoding];
if([string length] < 1)
{
continue;
}
// …
if([mutableArray containsObject:string] == YES)
{
continue;
}
[mutableArray addObject:string];
// …
}
// …
CFRelease(hostRef);
// …
if([mutableArray count] < 1)
{
return nil;
}
// …
return mutableArray;
// …
}