Solucións ás Prácticas con InetAddress

De MediaWiki
Ir a la navegación Ir a la búsqueda

Enunciado 2

Escribe un programa que facendo uso da clase InetAddress simule ó comando nslookup, que amosa o nome dunha máquina a partir da súa IP

 1 import java.net.*;
 2 public class obtenerDire {
 3     public static void main(String[] args) {
 4         /*Introduce a IP do sitio por liña de comandos: se non se introduce remátase coa execución do programa informando */
 5         if (args.length == 0) {
 6             System.out.println("Introduce como argumente una IP correcta");
 7             System.exit(-1);
 8         }
 9 
10         try {
11             //Un nodo conterá o parametro pasado por liña de comandos.
12             String nodo = args[0];
13 
14             InetAddress direccion = InetAddress.getByName(nodo);
15 
16             //Obtemos a IP e o nome do host do nodo anterior
17             System.out.println("Enderezo: " + direccion.getHostAddress());
18             System.out.println("Nome: " + direccion.getHostName());
19 
20         } catch (UnknownHostException e) {
21             System.out.println("A IP non existe");
22         }
23     }
24 }

Por exemplo, pasando como parámetro www.google.es, devolve:

Enderezo: 142.250.184.3
Nome: www.google.es 

E pasando como parámetro 8.8.8.8 (o servizo de resolución DNS de google);

Enderezo: 8.8.8.8
Nome: dns.google

Enunciado 3

Realiza un programa que:

  • admita desde a liña de comandos un nome de máquina ou un enderezo IP
  • e visualice información sobre ela
  • o nome do host
  • o enderezo IP do host
  • o seu nome canónico
 1 import java.net.*;
 2 import java.io.*;
 3 
 4 /* Le un nome de máquina ou un enderezo IP e visualiza nome do host, enderezo IP do host e o seu nome canónico */
 5 public class Exercicio3 {
 6 
 7     public static void main(String[] args) {
 8         String maquina = null;
 9         BufferedReader lectura = new BufferedReader(new InputStreamReader(System.in));
10         System.out.println("Introduzca IP ou nome dea máquina: ");
11         try {
12             maquina = lectura.readLine();
13             InetAddress dir = null;
14 
15             System.out.println("SAÍDA PARA A URL:");
16             dir = InetAddress.getByName(maquina);
17             probaMetodos(dir);
18 
19             // Array de tipo InetAddress con todas os enderezos IP asingados
20             // Podes probar con  google.es
21             System.out.println("\n\tEnderezos IP para: " + dir.getHostName());
22             InetAddress[] enderezos = InetAddress.getAllByName(dir.getHostName());
23             for (int i = 0; i < enderezos.length; i++) {
24                 System.out.println("\t\t" + enderezos[i].toString());
25             }
26             System.out.println("=========================================");
27         } catch (UnknownHostException el) {
28             el.printStackTrace();
29         } catch (IOException e2) {
30             e2.printStackTrace();
31         }
32     }// main
33     //
34 
35     private static void probaMetodos(InetAddress dir) {
36         System.out.println("\tMetodo getByName(): " + dir);
37         InetAddress dir2;
38         try {
39             dir2 = InetAddress.getLocalHost();
40             System.out.println("\tMetodo getLocalHost(): " + dir2);
41         } catch (UnknownHostException e) {
42             e.printStackTrace();
43         }
44         // usamos métodas da clase
45         System.out.println("\tMetodo getHostName(): " + dir.getHostName());
46         System.out.println("\tMetodo getHostAddress(): " + dir.getHostAddress());
47         System.out.println("\tMetodo toString(): " + dir.toString());
48         System.out.println("\tMetodo getCanonicalHostName(): " + dir.getCanonicalHostName());
49     }
50 }