Solucións ás Prácticas con InetAddress
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 none 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 Ejercicio3 {
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 o nombre de la 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
23 = InetAddress.getAllByName(dir.getHostName());
24 for (int i = 0; i < enderezos.length; i++) {
25 System.out.println("\t\t" + enderezos[i].toString());
26 }
27 System.out.println("=========================================");
28 } catch (UnknownHostException el) {
29 el.printStackTrace();
30 } catch (IOException e2) {
31 e2.printStackTrace();
32 }
33 }// main
34 //
35
36 private static void probaMetodos(InetAddress dir) {
37 System.out.println("\tMetodo getByName(): " + dir);
38 InetAddress dir2;
39 try {
40 dir2 = InetAddress.getLocalHost();
41 System.out.println("\tMetodo getLocalHost(): " + dir2);
42 } catch (UnknownHostException e) {
43 e.printStackTrace();
44 }
45 // usamos métodas da clase
46 System.out.println("\tMetodo getHostName(): " + dir.getHostName());
47 System.out.println("\tMetodo getHostAddress(): " + dir.getHostAddress());
48 System.out.println("\tMetodo toString(): " + dir.toString());
49 System.out.println("\tMetodo getCanonicalHostName(): " + dir.getCanonicalHostName());
50 }
51 }