Преобразование [адресов NSNetservice] в строку IP-адреса - PullRequest
7 голосов
/ 24 февраля 2010

Этот вопрос уже задавался здесь: NSNetservice IP-адрес

и здесь: iPhone: Bonjour NSNetService IP-адрес и порт

Я использовал оба из них, чтобы добраться туда, где я сейчас нахожусь. Моя проблема в следующем методе, который у меня не совсем работает:

- (NSString *)getStringFromAddressData:(NSData *)dataIn {
    struct sockaddr_in  *socketAddress = nil;
    NSString            *ipString = nil;

    socketAddress = (struct sockaddr_in *)[dataIn bytes];
    ipString = [NSString stringWithFormat: @"%s",
                inet_ntoa(socketAddress->sin_addr)];  ///problem here
    return ipString;
}

Это приводит к ошибке сборки, в которой говорится об «Разыменовании указателя на неполный тип» и «Неявном объявлении функции« inet_ntoa »» в одной строке.

Я проверил, и я не думаю, что мне не хватает какого-то типа фреймворка, чтобы заставить inet_ntoa работать. Есть идеи, что я делаю не так? спасибо.

Ответы [ 2 ]

19 голосов
/ 24 февраля 2010

Если вы получаете неявное объявление inet_ntoa, вам, вероятно, потребуется

 #include <arpa/inet.h>

(Вы можете набрать inet_ntoa, чтобы получить эту информацию и узнать больше об этой функции)

3 голосов
/ 12 февраля 2011

FWIW Я разместил обновленный фрагмент кода для обработки разрешения адреса NSNetService по адресу

iPhone: Bonjour IP-адрес и порт NSNetService .

...