【问题标题】:DNS query in JAVAJAVA中的DNS查询
【发布时间】:2022-05-12 14:47:34
【问题描述】:

我在 Java 中搞乱 DNS 服务 - 我专门尝试查找所有 google.com 地址并将它们显示在一个数组中,类似于使用 nslookup 运行查找:

nslookup -q=TXT _netblocks.google.com 8.8.8.8

我为此使用InetAddress,但不断收到异常错误。由于错误涉及“未知主机”,我认为InetAddress 无法读取 TXT 记录(如果我使用 google.com,它可以工作,但不会显示完整的 IP 范围)。以下是我的代码:

InetAddress dnsresult[] = InetAddress.getAllByName("_netblocks.google.com");
            for (int i=0; i<dnsresult.length; i++)
            System.out.println (dnsresult[i]);

如果有人能指出我正确的方向,将不胜感激。

-JK

【问题讨论】:

  • 这个问题可能与Java无关,因为我的ping也无法解决_netblocks.google.com
  • 谢谢 Zhedar,我知道 :) 我补充说是为了说明我想要做什么。如果我使用 'google.com' 作为我的论点,它会弹出一个 IP。但那是A记录。我需要获取 TXT 记录。

标签: java dns inetaddress


【解决方案1】:

不能查找 TXT 或其他 DNS 记录 InetAddress 类。 InetAddress.getAllByName() 仅查找 AAAAA 记录。

检查DNS Java 了解您的需求。

【讨论】:

    【解决方案2】:

    InetAddress 不这样做,但您可以通过 JNDI DNS provider 在 Java 中完成 DNS TXT 记录查找。

    【讨论】:

      【解决方案3】:

      这是一个可以做你想做的事情的例子:

      Attribute attr = new InitialDirContext().getAttributes("dns:_netblocks.google.com", new String[] {"TXT"}).get("TXT");
      System.out.println("attr.get() = " + attr.get());
      System.out.println("attr.getAll() = " + Collections.list(attr.getAll()));
      

      如果您想使用自定义 dns 服务器,请改用“dns://1.1/_netblocks.google.com”。

      【讨论】:

        猜你喜欢
        • 2014-11-22
        • 1970-01-01
        • 2018-11-20
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多