// =========================================================
// Работа с адресами IP с помощью класса InetAddress
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.net.*;
import java.io.*;
import java.util.*;

// =========================================================
// Класс InetAddressDemo
// Главный класс приложения
// =========================================================
public class InetAddressDemo
{
  // -------------------------------------------------------
  // main
  // Метод, получающий управление при запуске приложения
  // -------------------------------------------------------
  public static void main(String args[])
  {
    // Массив для ввода строки с клавиатуры
    byte bKbdInput[] = new byte[256];

    // Введенная строка
    String sIn;

    // Рабочая строка
    String str;

    // Адрес локального узла
    InetAddress iaLocal;

    // Массив байт адреса локального узла
    byte[] iaLocalIP;

    // Массив всех адресов удаленного узла
    InetAddress[] iaRemoteAll;

    try
    {
      // Получаем адрес локального узла
      iaLocal = InetAddress.getLocalHost();

      // Отображаем имя локального узла на консоли
      System.out.println("Local host name: " +
        iaLocal.getHostName());

      // Определяем адрес IP локального узла
      iaLocalIP = iaLocal.getAddress();

      // Отображаем отдельные байты адреса IP локального узла
      System.out.println("Local host IP address: " +
        (0xff & (int)iaLocalIP[0]) + "." + 
        (0xff & (int)iaLocalIP[1]) + "." + 
        (0xff & (int)iaLocalIP[2]) + "." + 
        (0xff & (int)iaLocalIP[3]));

      // Отображаем адрес IP локального узла, полученный
      // в виде текстовой строки
      System.out.println("Local host IP address: " + 
        iaLocal.toString());

      // Вводим имя удаленного узла, адрес которого
      // мы будет определять
      System.out.println("Enter remote host name...");
      System.in.read(bKbdInput);
      sIn = new String(bKbdInput, 0);

      // Обрезаем строку, удаляя символ конца строки
      StringTokenizer st;
      st  = new StringTokenizer(sIn, "\r\n");
      str = new String((String)st.nextElement());

      // Получаем все адреса IP, свяжанные с удаленным
      // узлом, имя которого мы только что ввели
      iaRemoteAll = InetAddress.getAllByName(str);

      // Отображаем эти адреса на консоли
      for(int i = 0; i < iaRemoteAll.length; i++)
      {
        System.out.println("Remote host IP address: " + 
          iaRemoteAll[i].toString());
      }

      System.out.println("Press <Enter> to terminate...");
      System.in.read(bKbdInput);
    }
    catch(Exception ioe)
    {
      System.out.println(ioe.toString());
    }
  }
}

