An nslookup clone in Java : IP Address « Network Protocol « Java






An nslookup clone in Java

       
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



           
         
    
    
    
    
    
    
  








Related examples in the same category

1.Get IP
2.Get all IP addresses
3.Convert a hostname to the equivalent IP addressConvert a hostname to the equivalent IP address
4.Getting the Hostname of an IP Address
5.Get canonical host name
6.Getting the IP Address and Hostname of the Local Machine
7.Perform Network Lookup with the InetAddress class
8.Get hostname by a byte array containing the IP address
9.Display multiple IP addresses
10.Looking Up the Address of a HostLooking Up the Address of a Host
11.Retrieve the hostname of an IP Address
12.Retrieve the IP address of a hostname
13.Report By Address
14.Determine the IP address and hostname of the local machine
15.Looking for Ports: 0 -- 1024
16.Looking for Port: 1024 -- 65536
17.Looking for Port: start from 65535
18.A class that performs some subnet calculations given a network address and a subnet mask.
19.Resolves string ip address and returns host name as a string
20.Resolves hostname and returns ip address as a string
21.Resolves ip address and returns host name as a string
22.This program demonstrates the InetAddress class
23.Check if IP address match pattern
24.Converts IPv4 address in its textual presentation form into its numeric binary form.
25.Convert IPv6 presentation level address to network order binary form.
26.Finds this computer's global IP address
27.Finds a local, non-loopback, IPv4 address
28.Check if the specified address is a valid numeric TCP/IP address
29.Check if the specified address is within the required subnet
30.Check if the specified address is a valid numeric TCP/IP address and return as an integer value
31.Convert a raw IP address array as a String
32.Determine if the given string is a valid IPv4 or IPv6 address.Determine if the given string is a valid IPv4 or IPv6 address.
33.A string input validator for IPs and domains.
34.Get Current Environment Network IP