首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS Xcode Swift -如何获取热点连接设备的IP地址?

iOS Xcode Swift -如何获取热点连接设备的IP地址?
EN

Stack Overflow用户
提问于 2019-12-05 03:11:42
回答 1查看 1.3K关注 0票数 4

在Swift 5或任何其他开源代码中有针对它的API吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-07 01:04:18

请参考下面的代码。

要获取热点连接设备的IP,请使用Network.wifi。

代码语言:javascript
复制
enum Network: String {
    case wifi = "en0"
    case cellular = "pdp_ip0"
    case ipv4 = "ipv4"
    case ipv6 = "ipv6"
}

func getAddress(for network: Network) -> 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 == network.rawValue {

                // 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
}

print("wifi: \(String(describing: getAddress(for: .wifi)))")

有关详细信息,请参阅以下链接:

Swift - Get device's WIFI IP Address

Get IPAddress of iPhone or iPad device Using Swift 3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59183160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档