Para conocer nuestra ip local debemos recurrir a la clase java.net.InetAddress
Esta clase representa una dirección de protocolo de internet(IP) o bueno es lo que la documentación misma dice.
Solo basta con importar la clase, instanciar un objeto de la misma a través del método getLocalHost()
1 2 3 4 5 6 7 8 9 10 | import java.net.InetAddress; ... InetAddress ip; try { ip = InetAddress.getLocalHost(); System.out.print("ipLocal: "); System.out.println(ip.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } |
La salida será del estilo:
1 | ipLocal: 10.0.0.157 |
También InetAddress nos permitirá conocer el nombre de la pc y el dominio:
1 2 3 4 | System.out.print("nombre del PC: "); System.out.println(ip.getHostName()); System.out.print("dominio del PC: "); System.out.println(ip.getCanonicalHostName()); |
1 2 | nombre del PC: Dar10-PC dominio del PC: algunDominio |
Ip pública
Para hallar nuestra ip pública debemos recurrir a un servicio como por ejemplo http://checkip.amazonaws.com
Este servicio de amazon, nos devuelve un InputStream con nada más ni nada menos que la ip del solicitando, pero nos vale para obtener nuestra propia ip publica.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; ... URL ipPublica; BufferedReader in = null; InputStreamReader isr = null; try { ipPublica = new URL("http://checkip.amazonaws.com"); isr = new InputStreamReader(ipPublica.openStream()); in = new BufferedReader(isr); String ip = in.readLine(); System.out.print("IP publica: "); System.out.println(ip); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if(isr != null){ isr.close(); } } catch (IOException e) { e.printStackTrace(); } } |
1 | IP publica: aqui va tu ip |