How to get external ip in Objective-C

I was looking for some code that will help me get the IP that the iPhone connects to.

I find this:

- (NSString *)getIPAddress { NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // retrieve the current interfaces - returns 0 on success success = getifaddrs(&interfaces); if (success == 0) { // Loop through linked list of interfaces temp_addr = interfaces; while(temp_addr != NULL) { if(temp_addr->ifa_addr->sa_family == AF_INET) { // Check if interface is en0 which is the wifi connection on the iPhone if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { // Get NSString from C String address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } // Free memory freeifaddrs(interfaces); return address; } 

but the problem is that he got me this ip 10.0.0.1

How to get an external ip?

+6
ios objective-c iphone cocoa-touch
source share
3 answers

The easiest way to get your IP address from code is to use NSURLConnection .

For a URL you can use: http://www.whatismyip.com/m/mobile.asp or http://checkip.dyndns.com/

Just analyze the returned data and you have an external IP address.

+4
source share

Take a look at an example in my second answer here .

In a nutshell, he uses * http://www.dyndns.org/cgi-bin/check_ip.cg * i to get an extenal IP

+2
source share

Check out Apple PortMapper , does exactly what you want.

In iOS7, this does not matter.

+1
source share

All Articles