1 class getInterfaceInformation{ 2 //get ethernet information about name,address,netmask,broadcast 3 static func getInterfaceInformation() -> [String:[String]] { 4 var information = [String:[String]]() 5 var ifaddr:UnsafeMutablePointer<ifaddrs> = nil 6 //retrieve the current interface -- return 0 on success 7 if getifaddrs(&ifaddr) == 0 { 8 var interface = ifaddr 9 //loop through linked list of interface 10 while interface != nil { 11 if interface.memory.ifa_addr.memory.sa_family == UInt8(AF_INET) {//ipv4 12 let interfaceName = String.fromCString(interface.memory.ifa_name) 13 let interfaceAddress = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_addr).memory.sin_addr)) 14 let interfaceNetmask = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_netmask).memory.sin_addr)) 15 let interfaceBroadcast = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_dstaddr).memory.sin_addr)) 16 17 if let name = interfaceName { 18 let temp = [interfaceAddress!,interfaceNetmask!,interfaceBroadcast!] 19 information[name] = temp 20 } 21 } 22 interface = interface.memory.ifa_next 23 } 24 freeifaddrs(ifaddr) 25 } 26 return information 27 } 28 }
lo0 //Location
en0 //LAN
pdp_ip0 //Cellular
bridge0 //Personal Hotspot
Result:
Environment:
Xcode7.0,iPhone7.1
Get all Ethernet information in Swift
原文:http://www.cnblogs.com/xwjack1554239786/p/5135897.html