使用移动数据获取IP地址,而无需使用WiFi

时间:2017-09-07 14:22:00

标签: ios swift

我无法使用移动数据获取IP地址,但如果我使用WiFi则可以正常工作。

我的代码:

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
}

0 个答案:

没有答案