Given a domain and a nameserver ip I'd like to know where is that nameserver resolving the IP in java, how can I achieve it? Thanks
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You have at least two options:
If your code has to run on any VM, you must use one of the many available Java DNS libraries. Googling for "java dns library" will give you many options.
If your code is only going to run on a Sun/Oracle VM, you can use the proprietary JNDI DNS provider like this:
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns://<your DNS server>");
DirContext ictx = new InitialDirContext(env);
Attributes attrs = ictx.getAttributes("www.heise.de", new String[] {"A", "AAAA"});
NamingEnumeration<? extends Attribute> e = attrs.getAll();
while(e.hasMoreElements()) {
Attribute a = e.next();
System.out.println(a.getID() + " = " + a.get());
}
This example will query the specified DNS server for all A and AAAA records for the host www.heise.de:
A = 193.99.144.85
AAAA = 2a02:2e0:3fe:100::7
回答2:
If you need to query a specific nameserver to see how it is responding you can use the JNDI interface.