Today in Cocoachina see someone posted in asked how to get the physical address of the network card in Mac OSX, just recently in learning some knowledge of iokit, so through the Iokit interface must be very convenient to get MAC address information, But I don't know if there are any more convenient APIs, so I'll put out a piece of code to get the MAC address of the NIC via Iokit:
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_transferNsdictionary *) 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)]; //print MAC address if (bsdname && macAddress) { nslog (@ "NIC:%@\nmac Address:%@\n", bsdname,macaddress); IO Objectrelease (iterator); } /span> |
Get the NIC MAC address in Mac OSX