This Java tip shows how to create an nslookup clone in Java.

Java Code:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * An "nslookup" clone in Java.
 * 
 * @author Elliot Rusty Harold, O'Reilly & Associates
 */
public class JavaLookup {

  public static void main(String args[]) {

    if (args.length > 0) { // use command line
      for (int i = 0; i < args.length; i++) {
        lookup(args[i]);
      }
    } else {
      DataInputStream myInputStream = new DataInputStream(System.in);
      System.out
          .println("Enter names and IP addresses. Enter \"exit\" to quit.");
      while (true) {
        String s;
        try {
          s = myInputStream.readLine();
        } catch (IOException e) {
          break;
        }
        if (s.equals("exit"))
          break;
        if (s.equals("quit"))
          break;
        if (s.charAt(0) == '\004')
          break; // unix ^D
        lookup(s);
      }

    }

  } /* end main */

  private static void lookup(String s) {

    InetAddress thisComputer;
    byte[] address;

    // get the bytes of the IP address
    try {
      thisComputer = InetAddress.getByName(s);
      address = thisComputer.getAddress();
    } catch (UnknownHostException ue) {
      System.out.println("Cannot find host " + s);
      return;
    }

    if (isHostname(s)) {
      // Print the IP address
      for (int i = 0; i < address.length; i++) {
        int unsignedByte = address[i] < 0 ? address[i] + 256
            : address[i];
        System.out.print(unsignedByte + ".");
      }
      System.out.println();
    } else { // this is an IP address
      try {
        System.out.println(InetAddress.getByName(s));
      } catch (UnknownHostException e) {
        System.out.println("Could not lookup the address " + s);
      }
    }

  } // end lookup

  private static boolean isHostname(String s) {

    char[] ca = s.toCharArray();
    // if we see a character that is neither a digit nor a period
    // then s is probably a hostname
    for (int i = 0; i < ca.length; i++) {
      if (!Character.isDigit(ca[i])) {
        if (ca[i] != '.') {
          return true;
        }
      }
    }

    // Everything was either a digit or a period
    // so s looks like an IP address in dotted quad format
    return false;

  } // end isHostName

} // end javalookup