package test;

import java.io.PrintStream;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.HexFormat;

public class TestHost
{

   public static void main(String[] args)
   {
      int len = args.length;
      if (len <= 0)
      {
         System.out.println("Usage: java -cp . test.TestHost host1 [ host2 ...]");
         return;
      }
      PrintStream ps = new PrintStream(System.out, true);
      for (int i = 0; i < len; i++)
      {
         try
         {
            String host = args[i];
            ps.append("host = ").append(host).append("\r\n");
            InetAddress addr = InetAddress.getByName(host);
            ps.append("addr = ")
              .append(addr.toString())
              .append(", loopback=")
              .append(String.valueOf(addr.isLoopbackAddress()))
              .append(", wildcard_address=")
              .append(String.valueOf(addr.isAnyLocalAddress()))
              .append("\r\n");
            
            NetworkInterface nic = NetworkInterface.getByInetAddress(addr);
            ps.append("nic = ")
            .append(nic.toString())
            .append(", loopback=")
            .append(String.valueOf(nic.isLoopback()))
            .append(", virtual=")
            .append(String.valueOf(nic.isVirtual()))
            .append(", up=")
            .append(String.valueOf(nic.isUp()))
            .append(", mtu=")
            .append(String.valueOf(nic.getMTU()))
            .append(", had=")
            .append(nic.getHardwareAddress() != null ? HexFormat.of().formatHex(nic.getHardwareAddress()) : null)
            .append("\r\n");
         }
         catch(Throwable e)
         {
            e.printStackTrace(ps);
         }
      }
      
   }

}
