How to get the other devices' host name in the same wifi?

前端 未结 1 1284
滥情空心
滥情空心 2020-12-19 07:40

I found some iOS app which could scan the local network and list all the device information.

I wonder how.

Pic:

相关标签:
1条回答
  • 2020-12-19 08:03

    Step 1 - Gel local IP

    For iOS 7 and lower

    #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]
    

    Step 2 - Get online IPs

    https://github.com/tonymillion/Reachability
    Using Reachability, you can get subnet IP's reachability.

    Reachability* reach = [Reachability reachabilityWithHostname:subnetIp];
    

    Step 3 - Resolve hostname

    Apple has a great article, which covers HostnameResolving topics. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/ResolvingDNSHostnames.html

    You can try also simpler variant in iOS8

    [[NSHost hostWithAddress:@"173.194.34.24"] name]
    

    Example project

    https://github.com/mongizaidi/LAN-Scan
    here is a small project, that does the Local Area Network scan, you need only to resolve the hostnames, and you will get result that you want.

    0 讨论(0)
提交回复
热议问题