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;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…