Search code examples
objective-ccocoaip-addressnshost

Accessing IP Address with NSHost


I am trying to get the IP Address using NSHost. With the NSHost object I can use the addresses method to access an array of objects one of which is the IP Address. I fear though that the IP Address may change position in the array from one machine to the other. Is there a way to access this information in a universal way?

There was an attempt to answer this question in a previous post, but as you can see it falls short.

IP Address? - Cocoa

Here is my code:

+(NSString *) ipAddress {
    NSHost * h = [[[NSHost currentHost] addresses] objectAtIndex:1];
    return h ;  
}

Solution

  • I have used this on many machines without problems.

     -(void) getIPWithNSHost{
        NSArray *addresses = [[NSHost currentHost] addresses];
    
    for (NSString *anAddress in addresses) {
        if (![anAddress hasPrefix:@"127"] && [[anAddress componentsSeparatedByString:@"."] count] == 4) {
             stringAddress = anAddress;
            break;
        } else {
            stringAddress = @"IPv4 address not available" ;
        }
    }
            //NSLog (@"getIPWithNSHost: stringAddress = %@ ",stringAddress);    
    
    }
    

    NSString *stringAddress; is declared else where