zoukankan      html  css  js  c++  java
  • 在Mac OSX中获取网卡MAC地址

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    - (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 = [resultInfo objectForKey:@"BSD Name"];
    NSData *macData = [resultInfo objectForKey:@"IOMACAddress"];
    if (!macData)
    {
    continue;
    }

    NSMutableString *macAddress = [[NSMutableString alloc] init];
    const UInt8 *bytes = [macData bytes];
    for (int i=0; i<macData.length; i++)
    {
    [macAddress appendFormat:@"%02x",*(bytes+i)];
    }

    //打印Mac地址
    if (bsdName && macAddress)
    {
    NSLog(@"网卡:%@ Mac地址:%@ ",bsdName,macAddress);
    }
    }
    }

    IOObjectRelease(iterator);
    }
  • 相关阅读:
    个人学习随笔(psi-blast随笔)
    psp进度(11月25号-31号)
    本周psp(11月17-23)
    规格说明书练习-吉林市1日游
    补PSP进度(10.28-11.3)
    第九周PSP&进度条
    (第九周)读构建之法有感1
    (第九周)读构建之法有感2
    词频统计的效能测试。
    (第二周)读《构建之法》有感
  • 原文地址:https://www.cnblogs.com/xiao-love-meng/p/5757622.html
Copyright © 2011-2022 走看看