Я пытаюсь найти IP-адрес компьютера Windows (с именем TEST) в локальной сети Wi-Fi в iOS для smb-целей. Я Bonjour установлен на этой машине окна и, если я введите следующую команду в терминале на моем Mac (на той же Wi-Fi сети):Поиск IP-адреса локального имени хоста Windows на iOS
ping TEST.local
Я получаю успех ('64 байт из 10.0.1.19: icmp_seq = 285 ttl = 128 раз = 3,327 мс). Обратите внимание на ip (10.0.1.19): он правильно разрешает имя хоста! Пока нет проблем!
Теперь я пытаюсь сделать то же самое на прошивке с помощью CFHostCreateWithName:
NSString *host = @"TEST.local";
CFHostRef hostref = CFHostCreateWithName(nil/*or kCFAllocatorDefault, same result...*/,(__bridge CFStringRef)host);
CFStreamError *err;
Boolean lookup = CFHostStartInfoResolution(hostref, kCFHostAddresses, err);
NSArray* addresses = (__bridge NSArray*)CFHostGetAddressing(hostref, &lookup);
id first = addresses.firstObject;
if(first!=nil) {
struct in_addr *firstaddress = (__bridge struct in_addr *)first;
NSString *strDNS = [NSString stringWithUTF8String:inet_ntoa(*(firstaddress))];
}
Результатов варьируются от:
- Сначала он возвращает 2 адрес, как то же самое, и это нонсенс (не где-нибудь около 10.0.1.19, обычно начинается с 8)
- после этого нет результатов и ошибки (err): err-> domain = 12 и err-> error = 8. Похож на какую-то форму кеширования, не уверен в этом ...
Так что решение хоста отлично работает на Mac, но не работает на устройстве iOS, подключенном к той же сети ... Я что-то пропустил?
Я подозреваю, что преобразование из '' NSArray' для структуры in_addr' здесь. – trojanfoe