[SOLUCIONADO]Obtener mi propia IP pública en JAVA.

Iniciado por 23time, 31 Marzo 2010, 05:15 AM

0 Miembros y 2 Visitantes están viendo este tema.

23time

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


Shell Root

Podrias realizar una peticion a la pagina www.cualesmiip.com y desde alli recoger el resultado.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Blitzkrieg'

He intentado varias cosas pero solo me sale 127.0.1.1  :xD



sirdarckcat

#3
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!!

1mpuls0

#4
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.

Código (java) [Seleccionar]

/*
*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
abc

Leyer

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.

Código (java) [Seleccionar]

/*
*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 ;)

sirdarckcat

NetworkInterface no funciona si estas detras de una NAT

23time

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!!!.