Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未使用org.xbill.DNS lib获取DNS记录_Java_Dns_Dnsjava - Fatal编程技术网

Java 未使用org.xbill.DNS lib获取DNS记录

Java 未使用org.xbill.DNS lib获取DNS记录,java,dns,dnsjava,Java,Dns,Dnsjava,我已经编写了以下代码来获取任何域的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++) {

我已经编写了以下代码来获取任何域的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());
    }
}}
公共类DNSRec{
公共静态void main(字符串…参数)
{
试一试{
记录[]记录=新查找(“http://www.google.com,类型为.NS);
for(int i=0;i
输出:异常:空

我使用了org.xbill.DNSlib

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

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

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


我的互联网连接正常。

这里有两个问题:

  • 代码查找MX记录,然后尝试将结果强制转换为NSRecord
  • 不应将协议传递到
    查找
    类构造函数中。您正在为而不是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());
        }
    }}
    
    公共类DNSRec{
    公共静态void main(字符串…参数)
    {
    试一试{
    Lookup Lookup=新查找(“google.com”,Type.NS);
    Record[]records=lookup.run();
    for(int i=0;i
    这里有两件事不对:

  • 代码查找MX记录,然后尝试将结果强制转换为NSRecord
  • 不应将协议传递到
    查找
    类构造函数中。您正在为而不是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());
        }
    }}
    
    公共类DNSRec{
    公共静态void main(字符串…参数)
    {
    试一试{
    Lookup Lookup=新查找(“google.com”,Type.NS);
    Record[]records=lookup.run();
    for(int i=0;i
    谢谢汤姆的回复。我也尝试了NS,但仍然显示相同的输出:(是的,我尝试了两种方法,但输出相同…您尝试过吗?我尝试过-它对我很好。获取以下控制台输出:Nameserver ns1.google.com.Nameserver ns3.google.com.Nameserver ns4.google.com.Nameserver ns2.google.com.great。但对我不起作用:(我用javax.naming.directory尝试过,但是代码我不理解,这就是为什么我用org.xbill.DNS lib。你用过javax.naming.directory吗。谢谢回复:)谢谢你Tom的回复。我也试过NS,但它仍然显示相同的输出(是的,我尝试了两种方法,但输出相同…您尝试过吗?我尝试过-它对我很好。获取以下控制台输出:Nameserver ns1.google.com.Nameserver ns3.google.com.Nameserver ns4.google.com.Nameserver ns2.google.com.great。但对我不起作用:(我已经用javax.naming.directory尝试过了,但是代码我无法理解,这就是为什么我使用org.xbill.DNS lib。您是否使用过javax.naming.directory。谢谢回复:)