venerdì 8 ottobre 2010

La classe InetAddress

La classe InetAddres (del package java.net) è in grado di rappresentare un indirizzo IP di rete. All'interno troviamo alcuni metodi statici (non hanno bisogno di un'istanza della classe) particolarmente utili:
  • static InetAddress[] getAllByName(String host): ritorna un array di indirizzi IP riconducibili al nome dell'host;
  • static InetAddress getByAddress(byte[] addr): ritorna un oggetto InetAddress a partire da un indirizzo IP (passato in forma binaria, per IPv4 occorrono 4 byte);
  • static InetAddress getByAddress(String host, byte[] addr): ritorna un oggetto InetAddress riconducibile ai paramatri host ed addr;
  • static InetAddress getByName(String host): ritorna un oggetto InetAddress corrispondente all'host passato;
In caso di errori, nome dell'host o indirizzo IP errato, questi metodi scatenano un'eccezione di tipo UnknownHostException, ragion per cui vanno sempre innescati all'interno di blocchi try/catch. Vi occorre sapere l'indirizzo IP di un host? Poche righe di codice e il problema è risolto:
package address;

import java.net.*;

public class AddressTest {
 public static void main(String[] args) {
  try {
   String hostname=args[0];
   InetAddress ip=InetAddress.getByName(hostname);
   System.out.println(" Hostname: "+hostname);
   System.out.println(" Indirizzo IP: "+ip.toString().substring(args[0].length()+1));
  }
  catch(ArrayIndexOutOfBoundsException e) {
   System.out.println("Attenzione: fornire il nome dell'host come parametro!");
  }
  catch(UnknownHostException e) {
   System.out.println("Attenzione: hostname sconosciuto!");
  }
 }
}

Qui trovate il file jar del programma.

Nessun commento:

Posta un commento