Buenas.
Como podeis leer en el título del post, lo que estoy intentando es obtener mi propia IP pública con un programa en JAVA.
No se si esto es posible o como se podría hacer.
¿Alguien tiene alguna idea de como podría obtener esta información en JAVA?.
Un saludo y mil gracias ;D
Podrias realizar una peticion a la pagina www.cualesmiip.com y desde alli recoger el resultado.
He intentado varias cosas pero solo me sale 127.0.1.1 :xD
ip=(new java.net.Socket('www.google.com', 80)).getLocalAddress().getHostAddress());
si estas tras una NAT te va a dar la IP local.. para obtener la externa debes hacer algo como conectarte a gmail-smtp-in.l.google.com en el puerto 25 y mandar un EHLO foo:
C:\Users\sdc>nc -vvv gmail-smtp-in.l.google.com 25
DNS fwd/rev mismatch: gmail-smtp-in.l.google.com != mail-gx0-f28.google.com
gmail-smtp-in.l.google.com [209.85.217.28] 25 (smtp) open
220 mx.google.com ESMTP 8si3058921gxk.26
EHLO foo
250-mx.google.com at your service, [190.249.52.xxx]
250-SIZE 35651584
250-8BITMIME
250-ENHANCEDSTATUSCODES
250 PIPELINING
^C
y 190.249.52.xxx seria tu IP.
Saludos!!
Cita de: 23time en 31 Marzo 2010, 05:15 AM
Buenas.
Como podeis leer en el título del post, lo que estoy intentando es obtener mi propia IP pública con un programa en JAVA.
No se si esto es posible o como se podría hacer.
¿Alguien tiene alguna idea de como podría obtener esta información en JAVA?.
Un saludo y mil gracias ;D
Jaja si es posible, con metodos propios de java no sé, pero se puede obtener haciendo una conexion con alguna pagina que obtenga tu ip y que te la regrese.
/*
*Autor: Darhius929
**/
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.InputStream;
public class getIP {
private String publicIP = null;
public static void main(String args[]){
new getIP();
}
public getIP() {
try {
URL tempURL = new URL("http://www.whatismyip.org/");
HttpURLConnection tempConn = (HttpURLConnection)tempURL.openConnection();
InputStream tempInStream = tempConn.getInputStream();
InputStreamReader tempIsr = new InputStreamReader(tempInStream);
BufferedReader tempBr = new BufferedReader(tempIsr);
publicIP = tempBr.readLine();
tempBr.close();
tempInStream.close();
} catch (Exception ex) {
publicIP = "<No es posible resolver la direccion IP>";
}
System.out.println("Mi IP Publica es " +publicIP);
}
}
Saludos
Cita de: Darhius en 1 Abril 2010, 03:27 AM
Cita de: 23time en 31 Marzo 2010, 05:15 AM
Buenas.
Como podeis leer en el título del post, lo que estoy intentando es obtener mi propia IP pública con un programa en JAVA.
No se si esto es posible o como se podría hacer.
¿Alguien tiene alguna idea de como podría obtener esta información en JAVA?.
Un saludo y mil gracias ;D
Jaja si es posible, con metodos propios de java no sé, pero se puede obtener haciendo una conexion con alguna pagina que obtenga tu ip y que te la regrese.
/*
*Autor: Darhius929
**/
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.InputStream;
public class getIP {
private String publicIP = null;
public static void main(String args[]){
new getIP();
}
public getIP() {
try {
URL tempURL = new URL("http://www.whatismyip.org/");
HttpURLConnection tempConn = (HttpURLConnection)tempURL.openConnection();
InputStream tempInStream = tempConn.getInputStream();
InputStreamReader tempIsr = new InputStreamReader(tempInStream);
BufferedReader tempBr = new BufferedReader(tempIsr);
publicIP = tempBr.readLine();
tempBr.close();
tempInStream.close();
} catch (Exception ex) {
publicIP = "<No es posible resolver la direccion IP>";
}
System.out.println("Mi IP Publica es " +publicIP);
}
}
Saludos
con NetworkInterface tambien es posible sin conectarse a una web ;)
NetworkInterface no funciona si estas detras de una NAT
Muchas gracias por vuestra ayuda chavales.
Al final he utilizado la idea de conectarme a una web y obtener la información que quiero desde ahí.
Como la aplicación debe conectarse a un servidor intermedio donde se aloja una web, he alojado ahi un pequeño documento en PHP el cual lo único que hace es proporcionarte tu IP pública y utilizando los métodos de JAVA del paquete net, he sacado lo que buscaba.
Una idea simple...., pero que a mi no se me ocurría xD
Un saludo!!!.