如何获得其他设备的主机名在同一个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主机名,就可以得到你想要的结果。