检查Java中名称服务器的dns查找

时间:2012-09-13 11:53:48

标签: java http dns

给定一个域和一个名称服务器ip我想知道在java中解析IP的名称服务器在哪里,我该如何实现它?感谢

2 个答案:

答案 0 :(得分:5)

您至少有两个选择:

如果您的代码必须在任何VM上运行,则必须使用许多可用的Java DNS库之一。谷歌搜索“java dns库”将为您提供许多选择。

如果您的代码只能在Sun / Oracle VM上运行,您可以使用这样的专有JNDI DNS提供程序:

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());
}

此示例将在指定的DNS服务器中查询主机www.heise.de的所有A和AAAA记录:

A = 193.99.144.85

AAAA = 2a02:2e0:3fe:100 :: 7

答案 1 :(得分:2)

如果您需要查询特定的名称服务器以查看其响应方式,可以使用JNDI interface