以我的MAC都以太网和wifi都连接。如何知道我从哪里接入互联网

以我的MAC都以太网和wifi都连接。如何知道我从哪里接入互联网

问题描述:

当我连接到Ehernet和WiFi。我会得到两个分配给接口的IP地址,例如en0和en1。通过使用shell命令我被获取当前的路由接口 route get default | grep interface | awk '{print $2}' ,然后用网络服务订单 networksetup -listnetworkserviceorder以我的MAC都以太网和wifi都连接。如何知道我从哪里接入互联网

比较实现这一目标是否有MAC中的任何框架,这helpa我们知道当前接口used.So,我可以通过编程做到这一点在Objective-C

我们可以使用下面的代码

- (NSString*)defaultRouter { 

    SCDynamicStoreRef ds = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("myApplication"), NULL, NULL); 
    CFDictionaryRef dr6 = SCDynamicStoreCopyValue(ds, CFSTR("State:/Network/Global/IPv6")); 
    CFDictionaryRef dr4 = SCDynamicStoreCopyValue(ds, CFSTR("State:/Network/Global/IPv4")); 
    if(dr6) 
     { 
     CFStringRef router = CFDictionaryGetValue(dr6, CFSTR("PrimaryInterface")); 
     NSString *routerString = [NSString stringWithString:(__bridge NSString *)router]; 
     self.primaryInterface=routerString; 
      return self.primaryInterface; 
       CFRelease(dr6); 

     } 
    else if(dr4) 
     { 

     CFStringRef router = CFDictionaryGetValue(dr4, CFSTR("PrimaryInterface")); 
     NSString *routerString = [NSString stringWithString:(__bridge NSString *)router]; 
     NSLog(@"%@", routerString); 
     self.primaryInterface=routerString; 
      return self.primaryInterface; 
       CFRelease(dr4); 
     } 
    CFRelease(ds); 
    return 0; 

    } 

获取当前界面获取主接口使用它来获取适配器typr(Wi-Fi或以太网)之后

SCNetworkInterfaceGetLocalizedDisplayName(primaryInterface)