tianzhig 发表于 2017-7-6 21:45:33

在Mac OSX中获取网卡MAC地址

  今天在CocoaChina上看到有人发帖在询问如何在Mac OSX下获得网卡的物理地址,恰好最近在学习IOKit的一些知识,所以通过IOKit的接口肯定是可以很方便的拿到MAC地址信息的,但不知道还有没有其它更方便的API了,所以我姑且贴出一段通过IOKit去获得网卡MAC地址的代码:





- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    kern_return_t kr;
    CFMutableDictionaryRef matchDict;
    io_iterator_t iterator;
    io_registry_entry_t entry;
   
    matchDict = IOServiceMatching("IOEthernetInterface");
    kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchDict, &iterator);
   
    NSDictionary *resultInfo = nil;
   
    while ((entry = IOIteratorNext(iterator)) != 0)
    {
      CFMutableDictionaryRef properties=NULL;
      kr = IORegistryEntryCreateCFProperties(entry,
                                             &properties,
                                             kCFAllocatorDefault,
                                             kNilOptions);
      if (properties)
      {
            resultInfo = (__bridge_transfer NSDictionary *)properties;
            NSString *bsdName = ;
            NSData *macData = ;
            if (!macData)
            {
                continue;
            }
            
            NSMutableString *macAddress = [ init];
            const UInt8 *bytes = ;
            for (int i=0; i<macData.length; i++)
            {
                ;
            }
            
            //打印Mac地址
            if (bsdName && macAddress)
            {
                NSLog(@"网卡:%@\nMac地址:%@\n",bsdName,macAddress);
            }
      }
    }
   
    IOObjectRelease(iterator);
}



页: [1]
查看完整版本: 在Mac OSX中获取网卡MAC地址