获取本机的IP地址,记住一定要要桥引入相关的c头文件
static public func getMacAddress()->String{
let index = Int32(if_nametoindex("en0"))
let bsdData = "en0".dataUsingEncoding(NSUTF8StringEncoding)!
var mib : [Int32] = [CTL_NET,AF_ROUTE,0,AF_LINK,NET_RT_IFLIST,index]
var len = 0;
if sysctl(&mib,UInt32(mib.count), nil, &len,nil,0) < 0 {
MonitorLog.Log(0, context: "Error: could not determine length of info data structure ")
return "00:00:00:00:00:00"
}
var buffer = [CChar](count: len, repeatedValue: 0)
if sysctl(&mib, UInt32(mib.count), &buffer, &len, nil, 0) < 0 {
MonitorLog.Log(0, context: "Error: could not read info data structure");
return "00:00:00:00:00:00"
}
let infoData = NSData(bytes: buffer, length: len)
var interfaceMsgStruct = if_msghdr()
infoData.getBytes(&interfaceMsgStruct, length: sizeof(if_msghdr))
let socketStructStart = sizeof(if_msghdr) + 1
let socketStructData = infoData.subdataWithRange(NSMakeRange(socketStructStart, len - socketStructStart))
let rangeOfToken = socketStructData.rangeOfData(bsdData, options: NSDataSearchOptions(rawValue: 0), range: NSMakeRange(0, socketStructData.length))
let macAddressData = socketStructData.subdataWithRange(NSMakeRange(rangeOfToken.location + 3, 6))
var macAddressDataBytes = [UInt8](count: 6, repeatedValue: 0)
macAddressData.getBytes(&macAddressDataBytes, length: 6)
return macAddressDataBytes.map({ String(format:"%02x", $0) }).joinWithSeparator(":")
}