func outputDnsInfo() {
var res = __res_9_state()
guard res_9_ninit(&res) == 0 else {
print("get dns init failed")
return
}
let maxServers = 10
var servers = [res_9_sockaddr_union](repeating: res_9_sockaddr_union(), count: maxServers)
res_9_getservers(&res, &servers, res.nscount)
res_9_ndestroy(&res)
var arr = servers.filter({ $0.sin.sin_len > 0 })
var ip4s: [String] = []
var ip6s: [String] = []
for i in 0 ..< arr.count {
if arr[i].sin.sin_family == AF_INET6 {
let ip = UnsafeMutablePointer<Int8>.allocate(capacity: Int(INET6_ADDRSTRLEN))
if let ipStr = inet_ntop(AF_INET6, &(arr[i].sin6.sin6_addr), ip, socklen_t(INET6_ADDRSTRLEN)) {
ip6s.append(String(cString: ipStr))
}
} else {
ip4s.append(String(cString: inet_ntoa(arr[i].sin.sin_addr)))
}
}
print("ip4s => \(ip4s)")
print("ip6s => \(ip6s)")
}
ps.需要bridging里引用#include <resolv.h>