iOS版。 通过IP在同一本地networking中获取其他设备/计算机名称

我的程序的一项任务是扫描本地Wi-Finetworking,以查找同一networking中的任何设备/计算机。 我find解决scheme来获得所有工作设备的IP,但没有设法得到他们的名字。 我没有find任何线索来解决这个问题。 有什么build议么?

为了执行反向DNS查找,您需要调用CFHostGetNames函数,如下所示:

 + (NSArray *)hostnamesForIPv4Address:(NSString *)address { struct addrinfo *result = NULL; struct addrinfo hints; memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_NUMERICHOST; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = 0; int errorStatus = getaddrinfo([address cStringUsingEncoding:NSASCIIStringEncoding], NULL, &hints, &result); if (errorStatus != 0) { return nil; } CFDataRef addressRef = CFDataCreate(NULL, (UInt8 *)result->ai_addr, result->ai_addrlen); if (addressRef == nil) { return nil; } freeaddrinfo(result); CFHostRef hostRef = CFHostCreateWithAddress(kCFAllocatorDefault, addressRef); if (hostRef == nil) { return nil; } CFRelease(addressRef); BOOL succeeded = CFHostStartInfoResolution(hostRef, kCFHostNames, NULL); if (!succeeded) { return nil; } NSMutableArray *hostnames = [NSMutableArray array]; CFArrayRef hostnamesRef = CFHostGetNames(hostRef, NULL); for (int currentIndex = 0; currentIndex < [(__bridge NSArray *)hostnamesRef count]; currentIndex++) { [hostnames addObject:[(__bridge NSArray *)hostnamesRef objectAtIndex:currentIndex]]; } return hostnames; } 

BOOL succeeded = CFHostStartInfoResolution(hostRef, kCFHostNames, NULL); 现在我遇到这种情况总是失败,我试图使用getnameinfo函数,但仍然无法获取主机名

Interesting Posts