IPhone: получение IP-адреса при подключении через 3G - PullRequest
0 голосов
/ 07 февраля 2010

с использованием iphone SDK 3.1.2

При подключении через 3G на iphone к интернету, как узнать, какой IP-адрес используется для этого интерфейса.

Спасибо

1 Ответ

2 голосов
/ 07 февраля 2010

Вот фрагмент кода, который может помочь:

// Matt Brown's get WiFi IP addy solution
// Author gave permission to use in Cookbook under cookbook license
// http://mattbsoftware.blogspot.com/2009/04/how-to-get-ip-address-of-iphone-os-v221.html
+ (NSString *) localAddressForInterface:(NSString *)interface {
    BOOL success;
    struct ifaddrs * addrs;
    const struct ifaddrs * cursor;

    success = getifaddrs(&addrs) == 0;
    if (success) {
        cursor = addrs;
        while (cursor != NULL) {
            // the second test keeps from picking up the loopback address
            if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0) 
            {
                NSString *name = [NSString stringWithUTF8String:cursor->ifa_name];
                if ([name isEqualToString:interface])  // Wi-Fi adapter
                    return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];
            }
            cursor = cursor->ifa_next;
        }
        freeifaddrs(addrs);
    }
    return nil; 
}

+ (NSString *) localWiFiIPAddress
{
    return [UIDevice localAddressForInterface:@"en0"];
}

+ (NSString *) localCellularIPAddress
{
    return [UIDevice localAddressForInterface:@"pdp_ip0"];
}

Я не пытаюсь получить кредит на этот кусок кода сам. Вот оригинальный URL .

Key вызов функции getifaddrs .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...