Java DNSLookup obtener DNS atributos

Soy bastante nuevo en la red de registros de DNS y la necesidad de un programa que se puede ejecutar de búsqueda para conseguir los 3 principales los registros DNS de un dominio (a,MX,NS).

He estado buscando una solución de java aquí un no y mi final de la clase es la siguiente:
Sin embargo, yo siempre obtendrá una NameException y no puede encontrar la razón para ello.

[EDITAR]: El problema parece ser con nuestro internet, debido a que el uso de otros wifi, el programa se ejecute bien.

Muchas gracias,

import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;

public class DNSLookup
{
    public static void main(String args[])
    {
        String host = "google.com";
        try
        {
            InetAddress inetAddress = InetAddress.getByName(host);
            //show the Internet Address as name/address
            System.out.println(inetAddress.getHostName() + " " + inetAddress.getHostAddress());

            Hashtable<String, String> env = new Hashtable<String, String>();
            //env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
            //env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

            env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.dns.DnsContextFactory");
            //env.put(Context.PROVIDER_URL, "dns://google.com");

            //get the default initial Directory Context
            InitialDirContext iDirC = new InitialDirContext(env);
            //get the DNS records for inetAddress
            Attributes attributes = iDirC.getAttributes("dns:/"+inetAddress.getHostName());
            //get an enumeration of the attributes and print them out
            NamingEnumeration<?> attributeEnumeration = attributes.getAll();
            System.out.println("");
            while (attributeEnumeration.hasMore())
            {
                System.out.println("" + attributeEnumeration.next());
            }
            attributeEnumeration.close();
        }
        catch (UnknownHostException exception)
        {
            System.err.println("ERROR: Cannot access '" + host + "'");
        }
        catch (NamingException exception)
        {
            System.err.println("ERROR: No DNS record for '" + host + "'");
            exception.printStackTrace();
        }
    }
}

De salida:

google.com 74.125.128.113
ERROR: No DNS record for 'google.com'
javax.naming.CommunicationException: DNS error [Root exception is java.net.SocketTimeoutException: Receive timed out]; remaining name 'google.com'
    at com.sun.jndi.dns.DnsClient.query(Unknown Source)
    at com.sun.jndi.dns.Resolver.query(Unknown Source)
    at com.sun.jndi.dns.DnsContext.c_getAttributes(Unknown Source)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(Unknown Source)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(Unknown Source)
    at com.sun.jndi.toolkit.url.GenericURLDirContext.getAttributes(Unknown Source)
    at javax.naming.directory.InitialDirContext.getAttributes(Unknown Source)
    at javax.naming.directory.InitialDirContext.getAttributes(Unknown Source)
    at gimasys.dnsCrawler.DNSLookup.main(DNSLookup.java:35)
Caused by: java.net.SocketTimeoutException: Receive timed out
    at java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method)
    at java.net.DualStackPlainDatagramSocketImpl.receive0(Unknown Source)
    at java.net.AbstractPlainDatagramSocketImpl.receive(Unknown Source)
    at java.net.DatagramSocket.receive(Unknown Source)
    at com.sun.jndi.dns.DnsClient.doUdpQuery(Unknown Source)
    ... 9 more
InformationsquelleAutor MikeNQ | 2013-03-06

1 Kommentar

  1. 2

    He probado con clase proporcionada (DNSLookup.java), que es trabajo para mí.

    Mi underestanding se está dando a excepción en tiempo de espera, significa que no es capaz de conectarse al servidor.

    Check your internet connection ?
    • internet funciona bien, otra cosa es ni siquiera capaz de resolver el nombre de host de la dirección IP.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea