Get Local IP Address in Swift

 Swift获取本机IP地址,子网掩码,广播地址.

 1  static func getIPAddresses() -> [String] {
 2         var addresses = [String]()
 3         
 4         // Get list of all interfaces on the local machine:
 5         var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
 6         if getifaddrs(&ifaddr) == 0 {
 7             
 8             // For each interface ...
 9             for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
10                 let flags = Int32(ptr.memory.ifa_flags)
11                 var addr = ptr.memory.ifa_addr.memory
12                 
13                 // Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
14                 if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {
15                     if addr.sa_family == UInt8(AF_INET) || addr.sa_family == UInt8(AF_INET6) {
16                         
17                         // Convert interface address to a human readable string:
18                         var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
19                         if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),nil, socklen_t(0), NI_NUMERICHOST) == 0) {
20                             if let address = String.fromCString(hostname) {
21                                 addresses.append(address)
22                             }
23                         }
24                     }
25                 }
26             }
27             freeifaddrs(ifaddr)
28         }
29         return addresses
30     }

Reference:How to get Ip address in swift

posted @ 2016-01-14 21:42  Mini、哆啦  阅读(2350)  评论(0编辑  收藏  举报