Получите информацию сервера имен для поиска DNS в Java - PullRequest
3 голосов
/ 22 октября 2009

Если я смотрю IP-адрес из DNS-имени следующим образом:

InetAddress inetAddress = InetAddress.getByName(name);
String address = inetAddress.getHostAddress();

Могу ли я узнать, какой сервер имен дал мне информацию?

Ответы [ 3 ]

3 голосов
/ 22 октября 2009

Для данного InetAddress, попробуйте следующее:

// get the default initial Directory Context
InitialDirContext idc = new InitialDirContext();
// get the DNS records for inetAddress
Attributes attributes = idc.getAttributes("dns:/" + inetAddress.getHostName());
// get an enumeration of the attributes and print them out
NamingEnumeration attributeEnumeration = attributes.getAll();
System.out.println("-- DNS INFORMATION --");
while (attributeEnumeration.hasMore()) {
    System.out.println("" + attributeEnumeration.next());
}
attributeEnumeration.close();

Адаптируйте его, чтобы подобрать то, что вы ищете.

3 голосов
/ 22 октября 2009

Я не уверен, что это то, что вам нужно, но есть библиотека DNSJava , которая обеспечивает функциональность DNS в Java. Возможно, вы можете использовать это, чтобы лучше понять ваши проблемы или реализовать конкретное решение? Как я уже сказал, не идеально подходит для вас, но, возможно, полезно.

0 голосов
/ 17 октября 2017

вам нужен контекст именования. По желанию вы можете указать DNS-сервер. И даже тогда вам нужно выбрать то, что вы ищете. Вот пример.

final String ADDR_ATTRIB = "A";
final String[] ADDR_ATTRIBS = {ADDR_ATTRIB};
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
idc = new InitialDirContext(env);
env.put(Context.PROVIDER_URL, "dns://"+dnsServer);
final List<String> ipAddresses = new LinkedList<>();
final Attributes attrs = idc.getAttributes(hostname, ADDR_ATTRIBS);
final Attribute attr = attrs.get(ADDR_ATTRIB);
if (attr != null) for (int i = 0; i < attr.size(); i++)  ipAddresses.add((String) attr.get(i));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...