2013-03-02 98 views
-1

我使用下面的代碼。它在iOS 5上正常工作,但在iOS 6中,我沒有得到IP地址。在iOS6中如何獲得IP地址

#import <ifaddrs.h> 
    #import <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 6的WiFi連接有問題嗎?它在iOS 5中運行良好。謝謝。

+0

請填寫您的代碼... – 2013-03-02 10:19:25

回答

2

試試這個

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
NSString *str =[self getIPAddress]; 
NSLog(@"%@",str); 
// Do any additional setup after loading the view, typically from a nib. 
} 



-(NSString *)getIPAddress 
{ 
struct ifaddrs *interfaces = NULL; 
struct ifaddrs *temp_addr = NULL; 
NSString *wifiAddress = nil; 
NSString *cellAddress = nil; 
NSString *addr; 
if(!getifaddrs(&interfaces)) { 
    temp_addr = interfaces; 
    while(temp_addr != NULL) { 
     sa_family_t sa_type = temp_addr->ifa_addr->sa_family; 
     if(sa_type == AF_INET || sa_type == AF_INET6) { 
      NSString *name = [NSString stringWithUTF8String:temp_addr->ifa_name]; 
      addr = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; 
          if([name isEqualToString:@"en0"]) { 
            wifiAddress = addr; 
      } else 
       if([name isEqualToString:@"pdp_ip0"]) { 
              cellAddress = addr; 
       } 
     } 
     temp_addr = temp_addr->ifa_next; 
    } 
    // Free memory 
    freeifaddrs(interfaces); 
} 
return addr; 
} 
+0

我認爲這是在同時,即使在iOS 5的無限循環,也它不工作 – 2013-03-02 11:08:09

+0

亞姆在ipad – 2013-03-02 11:11:02

+0

與iOS6的工作我已經發布更新代碼現在檢查它 – Ravindhiran 2013-03-02 11:38:14