gpt4 book ai didi

ios - 从 iPhone 设置获取 DNS 服务器 IP

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:00 25 4
gpt4 key购买 nike

我试图找到一种方法来获取出现在设置->wi-fi->详细信息->DNS 下的我的 DNS 服务器 ip。我不知道苹果是否允许以编程方式获取此信息。

最佳答案

这是(恕我直言)一个更好的 Swift3+ 变体,它是我的 libresolv Swift 包装器的摘录,由 dig for iOS 使用。 ,并正确处理 IPV6 名称服务器:

open class Resolver {

fileprivate var state = __res_9_state()

public init() {
res_9_ninit(&state)
}

deinit() {
res_9_ndestroy(&state)
}

public final func getservers() -> [res_9_sockaddr_union] {

let maxServers = 10
var servers = [res_9_sockaddr_union](repeating: res_9_sockaddr_union(), count: maxServers)
let found = Int(res_9_getservers(&state, &servers, Int32(maxServers)))

// filter is to remove the erroneous empty entry when there's no real servers
return Array(servers[0 ..< found]).filter() { $0.sin.sin_len > 0 }
}
}

res_9_sockaddr_union 转换成它的字符串值可以这样做:

extension Resolver {
public static func getnameinfo(_ s: res_9_sockaddr_union) -> String {
var s = s
var hostBuffer = [CChar](repeating: 0, count: Int(NI_MAXHOST))

len sinlen = socklen_t(s.sin.sin_len)
let _ = withUnsafePointer(to: &s) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
Darwin.getnameinfo($0, sinlen,
&hostBuffer, socklen_t(hostBuffer.count),
nil, 0,
NI_NUMERICHOST)
}
}

return String(cString: hostBuffer)
}
}

所有组合可以得到一个 String[] 包含这样的服务器列表:

let servers = Resolver().getservers().map(Resolver.getnameinfo)

关于ios - 从 iPhone 设置获取 DNS 服务器 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com