如何获得其他设备的主机名在同一个WiFi?
我发现了一些可以扫描本地networking并列出所有设备信息的iOS应用程序。
我不知道如何。
图:
第1步 – 凝胶本地IP
对于iOS 7和更低
#include <ifaddrs.h> #include <arpa/inet.h> - (NSString *)getIPAddress { NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // retrieve the current interfaces - returns 0 on success success = getifaddrs(&interfaces); if (success == 0) { // Loop through linked list of interfaces temp_addr = interfaces; while(temp_addr != NULL) { if(temp_addr->ifa_addr->sa_family == AF_INET) { // Check if interface is en0 which is the wifi connection on the iPhone if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { // Get NSString from C String address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } // Free memory freeifaddrs(interfaces); return address; }
iOS 8
[[NSHost currentHost] address]
第2步 – 获取在线IP
https://github.com/tonymillion/Reachability
使用可达性,您可以获得子网IP的可达性。
Reachability* reach = [Reachability reachabilityWithHostname:subnetIp];
第3步 – parsing主机名
苹果有一篇很好的文章,涵盖了HostnameResolving主题。 https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/ResolvingDNSHostnames.html
你也可以尝试在iOS8中更简单的变种
[[NSHost hostWithAddress:@"173.194.34.24"] name]
示例项目
https://github.com/mongizaidi/LAN-Scan
这里是一个小项目,也就是局域网扫描,你只需要parsing主机名,就可以得到你想要的结果。