【问题标题】:Not getting DNS record using org.xbill.DNS lib没有使用 org.xbill.DNS lib 获取 DNS 记录
【发布时间】:2013-10-24 20:47:18
【问题描述】:

我编写了以下代码来获取任何域的 MX 记录,此处为 google.com

public class DNSRec {
public static void main(String... args) 
{
    try{
        Record [] records = new Lookup("http://www.google.com", Type.NS).run();
        for (int i = 0; i < records.length; i++) {
            NSRecord ns = (NSRecord) records[i];
            System.out.println("Nameserver " + ns.getTarget());
        }
    }catch(Exception e){
        System.out.println("Exception: "+e.getMessage());
    }
}}

输出:异常:null

我使用过 org.xbill.DNS 库。

上面的代码出了什么问题?

我应该使用这个库还是有其他更好的方法来获取 DNS 记录?

小例子 ;) 最欢迎 :) 。 . . .非常感谢您的回复

我的互联网连接很好。

【问题讨论】:

    标签: java dns dnsjava


    【解决方案1】:

    这里有两个问题:

    1. 代码查找 MX 记录,然后尝试将结果转换为 NSRecord。
    2. 不应将协议传递给Lookup 类构造函数。您正在为 domain 而不是 URL 进行名称服务器查找。因此,您应该使用 google.com 而不是 http://www.google.com

    试一试:

    public class DNSRec {
    public static void main(String... args) 
    {
        try{
            Lookup lookup = new Lookup("google.com", Type.NS);
            Record[] records = lookup.run();
    
            for (int i = 0; i < records.length; i++) {
                NSRecord ns = (NSRecord) records[i];
                System.out.println("Nameserver " + ns.getTarget());
            }
    
        }catch(Exception e){
            System.out.println("Exception: "+e.getMessage());
        }
    }}
    

    【讨论】:

    • 谢谢汤姆的回复。我也尝试了 NS,但它仍然显示相同的输出。 :(
    • 是的,我尝试了两种方式,但输出相同...你试过了吗?
    • 我有 - 它对我来说很好用。获取以下控制台输出:Nameserver ns1.google.com。名称服务器 ns3.google.com。名称服务器 ns4.google.com。名称服务器 ns2.google.com。
    • 太棒了。但对我不起作用:(我已经用 javax.naming.directory 尝试过,但我无法理解代码,这就是我使用 org.xbill.DNS lib 的原因。你曾经使用过 javax.naming.directory。谢谢回复:)
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多