Ответ 1
Если вам нужен внешний IP-адрес (тот, который используется для подключения из-за пределов локальной сети), вам необходимо запросить сервер во внешней сети. Быстрый поиск дал следующее: http://checkip.dyndns.org, http://www.whatismyip.com. Загружать страницу довольно просто, используя, например,
[NSData dataWithContentsOfURL:url]
и выполните некоторые строковые манипуляции, чтобы получить IP-адрес.
Если вам нужен IP-адрес внутренний (тот, который назначен, например, DHCP на ваше устройство), то, что вы обычно можете сделать, это разрешить имя хоста устройства, то есть
/*
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;
}