我想抓住android中的dns服务器。 this thread说有一些android.net.NetworkUtils类,但我发现没有这样的类。同样的问题被问到here但是没有得到解决。
答案 0 :(得分:3)
这是一个有效的项目示例:
for (long i = start; i < end + 1; i++) {
hosts_done++;
HostBean host = new HostBean();
host.ipAddress = NetInfo.getIpFromLongUnsigned(i);
try {
InetAddress ia = InetAddress.getByName(host.ipAddress);
host.hostname = ia.getCanonicalHostName();
host.isAlive = ia.isReachable(timeout) ? 1 : 0;
} catch (java.net.UnknownHostException e) {
Log.e(TAG, e.getMessage());
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
if (host.hostname != null && !host.hostname.equals(host.ipAddress)) {
// Is gateway ?
if (discover.net.gatewayIp.equals(host.ipAddress)) {
host.deviceType = 1;
}
// Mac Addr
host.hardwareAddress = HardwareAddress.getHardwareAddress(host.ipAddress);
// NIC vendor
try {
host.nicVendor = HardwareAddress.getNicVendor(host.hardwareAddress);
} catch (SQLiteDatabaseCorruptException e) {
Log.e(TAG, e.getMessage());
}
publishProgress(host);
} else {
publishProgress((HostBean) null);
答案 1 :(得分:0)
实际上,这看起来是一个很好的答案:
How do you get the current DNS servers for Android?
android.net.ConnectivityManager
会为您提供一系列的 NetworkInfo使用getAllNetworkInfo()
。然后用android.net.NetworkUtils.runDhcp()
获取任何给定的DhcpInfo 网络接口 -DhcpInfo structure
具有dns1
的IP地址 和dns2
用于该接口(它们是表示的接口的整数值) IP地址)。
这是另一个好的链接: