Question

J'ai le code qui me permet de déterminer l'adresse MAC et l'adresse IP de la connexion Wi-Fi sur l'iPhone, mais je ne peux pas comprendre comment obtenir le Masque de sous-réseau et l'adresse du routeur pour la connexion. Quelqu'un peut-il me diriger dans la bonne direction ici?

Était-ce utile?

La solution

Vous pouvez obtenir cette information en appelant l'adresse du routeur, consultez cette question.

Tout cela est de la vieille école UNIX concernant le réseau, vous devrez choisir qui des interfaces est la connexion Wi-Fi (autres choses comme une interface loopback sera là aussi). Ensuite, vous pourriez avoir à utiliser des fonctions comme inet_ntoa () en fonction de ce format que vous voulez lire les adresses IP. Il est pas mal, juste ennuyeux et laid. Amusez-vous bien!

Autres conseils

NSString *address = @"error";
NSString *netmask = @"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)];
                netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];
            }
        }

        temp_addr = temp_addr->ifa_next;
    }
}

// Free memory
freeifaddrs(interfaces);
NSLog(@"address %@", address);
NSLog(@"netmask %@", netmask);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top