以我的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)