How do I query the iPhone’s current IP address?

If you want the external IP address (the one used to connect from outside the local network), you need to query a server on the external network. A quick search yielded the following: http://checkip.dyndns.org, http://www.whatismyip.com. It is quite simple to load the page using e.g.

[NSData dataWithContentsOfURL:url]

and do some string manipulation to retrieve the IP address.

If you want the internal IP address (the one assigned e.g. by DHCP to your device), what you can usually do is to resolve the device’s hostname, i.e.


/*
Returns the local IP, or NULL on failure.
*/
const char* GetLocalIP() {
  char buf[256];
  if(gethostname(buf,sizeof(buf)))
    return NULL;
  struct hostent* he = gethostbyname(buf);
  if(!he)
    return NULL;
  for(int i=0; he->h_addr_list[i]; i++) {
    char* ip = inet_ntoa(*(struct in_addr*)he->h_addr_list[i]);
    if(ip != (char*)-1) return ip;
  }
  return NULL;
}

Leave a Comment