您的位置:首页 > 移动开发 > Swift

Get all Ethernet information in Swift

2016-01-16 17:34 609 查看
获取本机所有设备的网卡信息(打开的情况下)

class GetInterfaceInformation{

/**
get ethernet information about name,address,netmask,broadcast

- returns: return Dictionary contain Ethernet name,ip address,netmask,broadcast
*/
static func getInterfaceInformation() -> [String:[String]] {
var information = [String:[String]]()

var ifaddr:UnsafeMutablePointer<ifaddrs> = nil
//retrieve the current interface -- return 0 on success
if getifaddrs(&ifaddr) == 0 {
var interface = ifaddr
//loop through linked list of interface
while interface != nil {
if interface.memory.ifa_addr.memory.sa_family == UInt8(AF_INET) {//ipv4
let interfaceName = String.fromCString(interface.memory.ifa_name)
let interfaceAddress = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_addr).memory.sin_addr))
let interfaceNetmask = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_netmask).memory.sin_addr))
//ifa_dstaddr /* P2P interface destination */
//The ifa_dstaddr field references the destination address on a P2P inter-face, interface,
//face, if one exists, otherwise it contains the broadcast address.
let interfaceBroadcast = String.fromCString(inet_ntoa(UnsafeMutablePointer<sockaddr_in>(interface.memory.ifa_dstaddr).memory.sin_addr))

if let name = interfaceName {
information[name] = [interfaceAddress!,interfaceNetmask!,interfaceBroadcast!]
}
}
interface = interface.memory.ifa_next
}
freeifaddrs(ifaddr)
}
return information
}
}


lo0 //Location
en0 //LAN
pdp_ip0 //Cellular
bridge0 //Personal Hotspot

Result:



Environment:

Xcode7.0,iPhone7.1

Get Ip address in Swift
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: