[iOS] get device ip address in swift

主程式:

        if let addr = getWiFiAddress() {

            let ip_addr_array = addr.components(separatedBy: “.”)

            self.IpAddressFirst2 = ip_addr_array[0] + “.” + ip_addr_array[1]

            print(“ip address:” + IpAddressFirst2)

        }

 

副程式:


    // Return IP address of WiFi interface (en0) as a String, or `nil`

    func getWiFiAddress() -> String? {

        var address : String?

        

        // Get list of all interfaces on the local machine:

        var ifaddr : UnsafeMutablePointer<ifaddrs>?

        guard getifaddrs(&ifaddr) == 0 else { return nil }

        guard let firstAddr = ifaddr else { return nil }

        

        // For each interface …

        for ifptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {

            let interface = ifptr.pointee

            

            // Check for IPv4 or IPv6 interface:

            let addrFamily = interface.ifa_addr.pointee.sa_family

            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {

                

                // Check interface name:

                let name = String(cString: interface.ifa_name)

                if  name == “en0” {

                    

                    // Convert interface address to a human readable string:

                    var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))

                    getnameinfo(interface.ifa_addr, socklen_t(interface.ifa_addr.pointee.sa_len),

                                &hostname, socklen_t(hostname.count),

                                nil, socklen_t(0), NI_NUMERICHOST)

                    address = String(cString: hostname)

                }

            }

        }

        freeifaddrs(ifaddr)

        

        return address

    }

相關文章

寫留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *