• 在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);
    }
  • 相关阅读:
    3月4日毕设进度
    3月3日毕设进度
    3月2日毕设进度
    3月1日毕设进度
    2月29日毕设进度
    2月28日毕设进度
    2月27日毕设进度
    进度报告七 (重大技术需求调研)
    进度报告六-(重大技术需求调研)
    进度报告五 (重大技术需求调研)
  • 原文地址:https://www.cnblogs.com/xiao-love-meng/p/5757622.html
Copyright © 2020-2023  润新知