首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dnsjava查询使用java?

使用dnsjava查询使用java?
EN

Stack Overflow用户
提问于 2019-07-01 14:35:38
回答 1查看 1.9K关注 0票数 0

我试图使用google公共dns服务器(8.8.8.8)查询一些已知URL的IP地址。但是,似乎我无法使用下面的代码获得这个结果吗?我正在使用dnsjava java库。这是我目前的代码

结果

代码语言:javascript
复制
        Lookup lookup = new Lookup("stackoverflow.com", Type.NS);
        SimpleResolver resolver=new SimpleResolver("8.8.8.8");

        lookup.setDefaultResolver(resolver);
        lookup.setResolver(resolver);
        Record [] records = lookup.run();
        for (int i = 0; i < records.length; i++) {
            Record  r = (Record ) records[i];
            System.out.println(r.getName()+","+r.getAdditionalName());
        }
    }
    catch (  Exception ex) {
        ex.printStackTrace();
        logger.error(ex.getMessage(),ex);
    }

结果:

代码语言:javascript
复制
stackoverflow.com.,ns-1033.awsdns-01.org.
stackoverflow.com.,ns-cloud-e1.googledomains.com.
stackoverflow.com.,ns-cloud-e2.googledomains.com.
stackoverflow.com.,ns-358.awsdns-44.com.
EN

回答 1

Stack Overflow用户

发布于 2019-07-01 20:23:49

您不需要DNS库来查找IP地址。您可以简单地使用使用JNDI

代码语言:javascript
复制
Properties env = new Properties();
env.setProperty(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.dns.DnsContextFactory");
env.setProperty(Context.PROVIDER_URL, "dns://8.8.8.8");

DirContext context = new InitialDirContext(env);
Attributes list = context.getAttributes("stackoverflow.com",
    new String[] { "A" });

NamingEnumeration<? extends Attribute> records = list.getAll();
while (records.hasMore()) {
    Attribute record = records.next();
    String name = record.get().toString();
    System.out.println(name);
}

如果您坚持使用dnsjava库,则需要使用Type.A (正如您的代码在编辑之前所做的那样)。

看看记录类的文档,注意直接已知子类下的长列表。您需要将每条记录转换为适当的子类,在本例中是ARecord

一旦完成了该转换,您就可以使用一个额外的方法,getAddress

代码语言:javascript
复制
for (int i = 0; i < records.length; i++) {
    ARecord r = (ARecord) records[i];
    System.out.println(r.getName() + "," + r.getAdditionalName()
        + " => " + r.getAddress());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56837614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档