java中是否有一个库可以从底层服务器获取准确的DNS信息?
我不仅对IP到DNS的映射感兴趣,还对其他记录感兴趣:A、AAAA、MX、NS、SOA、RRSIG 等。
如果您的代码在 Oracle VM 上运行,您可以使用 JNDI 的 DNS 提供程序,例如:
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
env.put(Context.PROVIDER_URL, "dns:");
DirContext ctx = new InitialDirContext(env);
Attributes atts = ctx.getAttributes("stackexchange.com", new String[] {"MX"});
NamingEnumeration<? extends Attribute> e = atts.getAll();
while(e.hasMore()) {
System.out.println(e.next().get());
}
最好使用 dnsjava 库:
<dependency>
<groupId>dnsjava</groupId>
<artifactId>dnsjava</artifactId>
</dependency>
一个例子是这样的:
Record[] rs = new Lookup("maildomain.com", Type.MX).run();