我想选择要使用的DNS服务器。我将在同一JVM中做出可能的多个选择。我想从主机名解析IP地址。
我考虑过的事情:
-
使用
System.setProperty
为Java设置DNS设置,但使用类加载器确定其范围。但是,System
类似乎无法以不同方式加载。 -
使用dnsjava项目。但是,我认为不支持此功能。充其量,我似乎必须正确处理A记录、CNAME记录、AAAA记录等才能使其正常工作。
以非全局方式使用不同DNS服务器的最简单方法是什么?
dnsjava的例子中没有这一点,但我发现了:
(在Scala中)
import org.xbill.DNS._
val resolver = new SimpleResolver("8.8.8.8")
val lookup = new Lookup("example.com")
lookup.setResolver(resolver)
val records = lookup.run()
val address = records.asInstanceOf[ARecord].getAddress()
import org.xbill.DNS.*;
public Class ChoseDNSServer
{
private SimpleResolver sp;
private Lookup look;
public ChoseDNSServer(String ip)
{
//Provide ip of server you want to choose for your DNS query
sp = new SimpleResolver(ip);
look = new Lookup("URL");
look.setResolver(sp);
//Above method is used for setting up default DNS server.
}
public switchToServer(String ip)
{
sp = new SimpleResolver(ip);
look.setResolver(sp);
}
public Record lookup(String url)
{
look = new Lookup(url);
return look.run();
}
}