⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dns.java

📁 hadoop:Nutch集群平台
💻 JAVA
字号:
package org.apache.hadoop.net;import java.io.IOException;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Enumeration;import java.util.Vector;import javax.naming.NamingException;import javax.naming.directory.Attributes;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;/** *  * A class that provides direct and reverse lookup functionalities, allowing * the querying of specific network interfaces or nameservers. *  * @author Lorenzo Thione *  */public class DNS {  /**   * Returns the hostname associated with the specified IP address by the   * provided nameserver.   *    * @param hostIp   *            The address to reverse lookup   * @param ns   *            The host name of a reachable DNS server   * @return The host name associated with the provided IP   * @throws NamingException   *             If a NamingException is encountered   */  public static String reverseDns(InetAddress hostIp, String ns)    throws NamingException {    //    // Builds the reverse IP lookup form    // This is formed by reversing the IP numbers and appending in-addr.arpa    //    String[] parts = hostIp.getHostAddress().split("\\.");    String reverseIP = parts[3] + "." + parts[2] + "." + parts[1] + "."      + parts[0] + ".in-addr.arpa";    DirContext ictx = new InitialDirContext();    Attributes attribute =      ictx.getAttributes("dns://"               // Use "dns:///" if the default                         + ((ns == null) ? "" : ns) +                          // nameserver is to be used                         "/" + reverseIP, new String[] { "PTR" });    ictx.close();        return attribute.get("PTR").get().toString();  }  /**   * Returns all the IPs associated with the provided interface, if any, in   * textual form.   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @return A string vector of all the IPs associated with the provided   *         interface   * @throws UnknownHostException   *             If an UnknownHostException is encountered in querying the   *             default interface   *    */  public static String[] getIPs(String strInterface)    throws UnknownHostException {    try {      NetworkInterface netIF = NetworkInterface.getByName(strInterface);      if (netIF == null)        return new String[] { InetAddress.getLocalHost()                              .getHostAddress() };      else {        Vector ips = new Vector();        Enumeration e = netIF.getInetAddresses();        while (e.hasMoreElements())          ips.add(((InetAddress) e.nextElement()).getHostAddress());        return (String[]) ips.toArray(new String[] {});      }    } catch (SocketException e) {      return new String[] { InetAddress.getLocalHost().getHostAddress() };    }  }  /**   * Returns the first available IP address associated with the provided   * network interface   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @return The IP address in text form   * @throws UnknownHostException   *             If one is encountered in querying the default interface   */  public static String getDefaultIP(String strInterface)    throws UnknownHostException {    String[] ips = getIPs(strInterface);    return ips[0];  }  /**   * Returns all the host names associated by the provided nameserver with the   * address bound to the specified network interface   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @param nameserver   *            The DNS host name   * @return A string vector of all host names associated with the IPs tied to   *         the specified interface   * @throws UnknownHostException   */  public static String[] getHosts(String strInterface, String nameserver)    throws UnknownHostException {    String[] ips = getIPs(strInterface);    Vector hosts = new Vector();    for (int ctr = 0; ctr < ips.length; ctr++)      try {        hosts.add(reverseDns(InetAddress.getByName(ips[ctr]),                             nameserver));      } catch (Exception e) {      }    if (hosts.size() == 0)      return new String[] { InetAddress.getLocalHost().getHostName() };    else      return (String[]) hosts.toArray(new String[] {});  }  /**   * Returns all the host names associated by the default nameserver with the   * address bound to the specified network interface   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @return The list of host names associated with IPs bound to the network   *         interface   * @throws UnknownHostException   *             If one is encountered while querying the deault interface   *    */  public static String[] getHosts(String strInterface)    throws UnknownHostException {    return getHosts(strInterface, null);  }  /**   * Returns the default (first) host name associated by the provided   * nameserver with the address bound to the specified network interface   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @param nameserver   *            The DNS host name   * @return The default host names associated with IPs bound to the network   *         interface   * @throws UnknownHostException   *             If one is encountered while querying the deault interface   */  public static String getDefaultHost(String strInterface, String nameserver)    throws UnknownHostException {    if (strInterface.equals("default"))       return InetAddress.getLocalHost().getHostName();    if (nameserver.equals("default"))      return getDefaultHost(strInterface);    String[] hosts = getHosts(strInterface, nameserver);    return hosts[0];  }  /**   * Returns the default (first) host name associated by the default   * nameserver with the address bound to the specified network interface   *    * @param strInterface   *            The name of the network interface to query (e.g. eth0)   * @return The default host name associated with IPs bound to the network   *         interface   * @throws UnknownHostException   *             If one is encountered while querying the deault interface   */  public static String getDefaultHost(String strInterface)    throws UnknownHostException {    return getDefaultHost(strInterface, null);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -