从java获取DNS记录信息

从java获取DNS记录信息,java,dns,ip,mx-record,Java,Dns,Ip,Mx Record,java中是否有从底层服务器获取准确的DNS信息的库 我不仅对IP到DNS的映射感兴趣,还对其他记录感兴趣:A、AAAA、MX、NS、SOA、RRSIG e t.c.如果您的代码在Oracle VM上运行,您可以使用JNDI的DNS提供程序,例如: Hashtable<String, Object> env = new Hashtable<String, Object>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.su

java中是否有从底层服务器获取准确的DNS信息的库


我不仅对IP到DNS的映射感兴趣,还对其他记录感兴趣:A、AAAA、MX、NS、SOA、RRSIG e t.c.

如果您的代码在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());
}
Hashtable env=new Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.dns.DnsContextFactory”);
环境put(Context.PROVIDER_URL,“dns:”);
DirContext ctx=新的初始DirContext(env);
Attributes atts=ctx.getAttributes(“stackexchange.com”,新字符串[]{“MX”});

NamingEnumeration如果您的代码在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());
}
Hashtable env=new Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.dns.DnsContextFactory”);
环境put(Context.PROVIDER_URL,“dns:”);
DirContext ctx=新的初始DirContext(env);
Attributes atts=ctx.getAttributes(“stackexchange.com”,新字符串[]{“MX”});

NamingEnumeration最好使用dnsjava库:

<dependency>
    <groupId>dnsjava</groupId>
    <artifactId>dnsjava</artifactId>
</dependency>

最好使用dnsjava库:

<dependency>
    <groupId>dnsjava</groupId>
    <artifactId>dnsjava</artifactId>
</dependency>

这存在与ipv6相关的问题solution@builtofire:是否需要解释?@builtofire:更准确地说,此处查询的MX记录包含优先级和主机名,与IPv4或IPv6地址没有任何关系。你在谈论什么样的IPv6问题?如果在计算机上启用了IPv6,则会出现如下异常:
异常:无法解析主机的邮件交换器:gmail.com java.lang.NumberFormatException:对于输入字符串:java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)中的“4f8:0:a111::add:9898”~java.lang.Integer.parsent(Integer.java:492)上的[?:1.7.0_51]~[?:1.7.0_51]在java.lang.Integer.parsent(Integer.java:527)~[?:1.7.0_51]在com.sun.jndi.DnsClient.(DnsClient.java:122)~[?:1.7.0_51]在com.sun.jndi.dns.dns.Resolver.(Resolver.java:61)~[?:1.7.0_51]at
看起来是您系统的DNS配置有问题,而不是我的代码或Java API中的DNS实现有问题。4f8:0:a111::add:9898不是有效的IPv6地址。如果您已将其配置为DNS服务器,而某些软件无法处理此问题,则是您的DNS配置有问题。存在IPv6 relat我不同意这个问题solution@builtofire:需要解释吗?@builtofire:更准确地说,此处查询的MX记录包含优先级和主机名,与IPv4或IPv6地址没有任何关系。您在谈论什么样的IPv6问题?如果在计算机上启用IPv6,则会出现类似这样的异常:
Exception:无法解析主机的邮件交换器:gmail.com java.lang.NumberFormatException:对于输入字符串:java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)~[?:1.7.0\u 51]对于java.lang.Integer.parseInt(Integer.java:492)~[?:1.7.0\u 51]对于java.lang.Integer.parseInt(Integer.java:527)~[?:1.7.0_51]在com.sun.jndi.dns.DnsClient.(DnsClient.java:122)~[?:1.7.0_51]在com.sun.jndi.dns.Resolver.(Resolver.java:61)~[?:1.7.0_51]at
看起来是您系统的DNS配置有问题,而不是我的代码或Java API中的DNS实现有问题。4f8:0:a111::add:9898不是有效的IPv6地址。如果您已将其配置为DNS服务器,而某些软件无法处理此问题,则是您的DNS配置有问题。如何在androidh中使用它如何在android中使用它