在Mac OSX中获取网卡MAC地址

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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
- (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(@"网卡:%@\nMac地址:%@\n",bsdName,macAddress);            }        }    }

    IOObjectRelease(iterator);}
时间: 2024-11-02 23:31:31

在Mac OSX中获取网卡MAC地址的相关文章

Python 获取 网卡 MAC 地址

/*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: * 记录一下Python如何获取网卡MAC地址,主要用于数据唯一性保存. * * 2016-10-14 深圳 南山平山村 曾剑锋 **********************************************************************/ 一.参考文档: pyth

获取网卡MAC、硬盘序列号、CPU_ID、BIOS编号

抄来的 获取网卡MAC.硬盘序列号.CPU ID.BIOS编号 本文中所有原理及思想均取自网络,有修改.其中获取硬盘序列号.获取CPU编号.获取BIOS编号的原始代码的著作权归各自作者所有. 以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPU ID.BIOS编号) BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度 // 网卡 MAC

MAC OSX 中解决编译“&#39;cc&#39; failed with exit status 1”错误 和clang: error: unknown argument 错误

错误例子: error: command 'cc' failed with exit status 1 clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) in the fu

Mac osx中如何开启代码高亮

IM (Wikipedia图) Vim 是一款相当给力的源自UNIX平台的命令行文本编辑器,不过不给力的是,Mac OS X下并没有诸多Linux发行版上VIM那些牛逼哄哄的神马代码高亮显示啊,自动缩进啊神马的. (译者注:通常Linux发行版可以通过编辑/etc/vimrc文件更改全局VIM设定或者针对某个用户的~/.vimrc进行个性化配置) 为了弥补这个缺憾,请按如下方法操作: 打开Terminal,输入如下命令: cd /usr/share/vim sudo vim vimrc 两行命令

C# 获取网卡MAC的两种方式

获取网卡MAC第一种 不能判断当前使用的是那张网卡 1 /// <summary> 2 /// 获取网卡ID代码 3 /// </summary> 4 /// <returns></returns> 5 public static string GetNetworkAdpaterID() 6 { 7 NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 8 return n

再论 ASP.NET 中获取客户端IP地址

说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分区域投放等. 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"

从HTTP请求中获取客户IP地址

/**     * 从HTTP请求中获取客户IP地址     *     * @param request http请求     * @return 客户IP地址     */    public static String getIPAddress( HttpServletRequest request )    {        String ip = request.getHeader( "x-forwarded-for" );        if ( ip == null ||

(转)通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

最近由于项目的需要,需要在程序中获取机器的硬盘序列号和MAC地址等信息,在C#下,可以很容易的获得这些信息,但是在C++程序中感觉比较麻烦.经过百度,发现很多大虾都是通过WMI来获取这些硬件信息的,网上也有相关的代码,通过实际调试,也发现确实可以通过WMI来获取这些信息.前两天,在网上突然搜到一位大牛写的比较完整的程序,为了以后使用方便,就转载记录一下.同时,也会在大牛的代码中增加一些自己的注释,都是自己在实际使用过程中遇到的问题. #define _WIN32_DCOM #include "s

C++ 硬件信息 获取网卡MAC地址

获取计算机网卡MAC地址的方法很多,这里采用的是命令行的形式获取,可以获取有线网卡与无线网卡的MAC地址,很简单,直接 上代码. [1]头文件 #if !defined(AFX_95644697_C78F_4DD6_885B_3D7C40B2D55C__INCLUDED_) #define AFX_95644697_C78F_4DD6_885B_3D7C40B2D55C__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER