使用 Android 上的特定 DNS 服务器解析主机名
Resolve hostname with specific DNS server on Android
我有一个程序需要请求本地计算机进行 DNS 查找,但我无法修改主机的全局 DNS 设置。我该怎么做?
你可以尝试使用dnsjava库
这是一个示例:
private static String resolveDomain(String domain, String serverName) {
String hostName = null;
Lookup lookup;
try {
lookup = new Lookup(domain);
Resolver resolver = new SimpleResolver(serverName);
lookup.setResolver(resolver);
Record recs[] = lookup.run();
if (recs == null) {
return null;
}
for (Record rec : recs) {
hostName = rec.getName().toString();
break;
}
} catch (TextParseException e) {
} catch (NullPointerException e) {
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (hostName == null) {
return null;
} else if (hostName.endsWith(".")) {
hostName = hostName.substring(0, hostName.length() - 1);
}
return hostName;
}
我有一个程序需要请求本地计算机进行 DNS 查找,但我无法修改主机的全局 DNS 设置。我该怎么做?
你可以尝试使用dnsjava库
这是一个示例:
private static String resolveDomain(String domain, String serverName) {
String hostName = null;
Lookup lookup;
try {
lookup = new Lookup(domain);
Resolver resolver = new SimpleResolver(serverName);
lookup.setResolver(resolver);
Record recs[] = lookup.run();
if (recs == null) {
return null;
}
for (Record rec : recs) {
hostName = rec.getName().toString();
break;
}
} catch (TextParseException e) {
} catch (NullPointerException e) {
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (hostName == null) {
return null;
} else if (hostName.endsWith(".")) {
hostName = hostName.substring(0, hostName.length() - 1);
}
return hostName;
}