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

前端 未结 2 1652
不思量自难忘°
不思量自难忘° 2020-12-01 08:20

How do I query the iPhone\'s current IP address?

2条回答
  •  佛祖请我去吃肉
    2020-12-01 09:04

    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;
    }
    

提交回复
热议问题