Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

I wonder how.

Pic:enter image description here

like image 941
Feather Avatar asked Sep 23 '14 10:09

Feather


1 Answers

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.

like image 136
l0gg3r Avatar answered Nov 09 '22 12:11

l0gg3r