Доступ к IP-адресу с NSHost

Я пытаюсь получить использование IP-адреса NSHost. С NSHost объект я могу использовать метод адресов для доступа к массиву объектов, одним из которых является IP-адрес. Я боюсь, хотя это IP-адрес может сменить положение в массиве от одной машины до другого. Существует ли способ получить доступ к этой информации универсальным способом?

Была попытка ответить на этот вопрос в предыдущем сообщении, но поскольку Вы видите, что это терпит неудачу.

IP-адрес? - Какао

Вот мой код:

+(NSString *) ipAddress {
    NSHost * h = [[[NSHost currentHost] addresses] objectAtIndex:1];
    return h ;  
}

5
задан Community 23 May 2017 в 12:07
поделиться

3 ответа

Я использовал это на многих машинах без проблем.

 -(void) getIPWithNSHost{
    NSArray *addresses = [[NSHost currentHost] addresses];

for (NSString *anAddress in addresses) {
    if (![anAddress hasPrefix:@"127"] && [[anAddress componentsSeparatedByString:@"."] count] == 4) {
         stringAddress = anAddress;
        break;
    } else {
        stringAddress = @"IPv4 address not available" ;
    }
}
        //NSLog (@"getIPWithNSHost: stringAddress = %@ ",stringAddress);    

}

NSString *stringAddress; объявляется в другом месте

9
ответ дан 18 December 2019 в 07:08
поделиться

Как было сказано в ответах на вопрос, который вы упомянули выше, существует множество IP-адресов, которые может иметь одна машина. Если вы хотите именно этого, то вам лучше использовать метод names в NSHost для получения массива имен, которые затем можно отфильтровать по суффиксу (т.е. *.lan), чтобы получить имя нужного вам узла с этим именем. В моем случае адрес .lan возвращает ip-адрес моей сети в виде точечного квадрата.

Если вы хотите найти внешний ip-адрес, то вот хороший ответ.

0
ответ дан 18 December 2019 в 07:08
поделиться

Мой первый ответ - предоставить частный IP-адрес, назначенный машине в частной сети, скажем, с вашего маршрутизатора.

Если вы хотите увидеть публичный IP-адрес, то есть тот, который выходит в Интернет. Обычно его назначает поставщик услуг. Вы можете посмотреть ответ Jim Dovey --> здесь

Я протестировал его, и он сработал хорошо, но прочитайте остальные комментарии и ответы, которые указывают на неоднозначность попыток получить публичный IP.

0
ответ дан 18 December 2019 в 07:08
поделиться