Foros del Web » Programación para mayores de 30 ;) » Java »

Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Estas en el tema de Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto) en el foro de Java en Foros del Web. Buenas, quiero compartir con ustedes una forma de obtener la ip publica/privada del cliente desde smartGwt/Gwt y desde javaScript, dado que un ida de estos ...
  #1 (permalink)  
Antiguo 09/10/2012, 11:22
Avatar de arrakshe  
Fecha de Ingreso: septiembre-2012
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 2
Información Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Buenas, quiero compartir con ustedes una forma de obtener la ip publica/privada del cliente desde smartGwt/Gwt y desde javaScript, dado que un ida de estos me toco implementarlo en mi proyecto, aclaro que esto es el resultado de mis plegarias a san Google , por lo tanto la solución no es 100% propia y la verdad ya ni me acuerdo de donde lo saque pero igual quiero compartirla con ustedes.

El contexto es el siguiente, tenemos una aplicación que trabaja con SmartGwt o Gwt y queremos obtener la ip del cliente sin tener que molestar al servidor(por determinada razón o limitación) entonces la solución es la siguiente, hay dos formas:
1. Desde SmartGwt/Gwt directamente utilizando la siguiente instrucción:
Código:
String cadenaIp = GWT.getHostPageBaseURL();
la cual nos devuelve una cadena que contiene la ip local pero también trae el alias (si existe) y otros datos, por consiguiente luego habría que descomponerla pero eso es lo de menos, el resultado obtenido en mi caso es asi: http://127.0.0.1/debug/

2. La otra forma de hacerlo es utilizando JSNI(JavaScript Native Interface), de esta forma definimos una funcion javaScript en el archivo html de nuestra aplicación y luego la llamamos desde SmartGwt/Gwt mediante un metodo, esto lo podríamos hacer mas o menos asi:
Llamada desde smartGwt/Gwt:
Código:
String str_User_ip = getIP();
Maetodo SmartGwt/Gwt:
Código:
public native String getIP() /*-{
		return $wnd.myIP();
	}-*/;
Funcion JavaScript:
Código:


Código Javascript:
Ver original
  1. <script type="text/javascript" language="javascript">
  2.        //Recupera ip privada
  3.        function myIP() {
  4.            
  5.             var cadenaIp = java.net.InetAddress.getLocalHost();
  6.             var ip = cadenaIp.getHostAddress();
  7.             return ip
  8.         }
  9.        
  10.        
  11.         //Recupera ip publica
  12.         function myIP() {
  13.             if (window.XMLHttpRequest)
  14.                 xmlhttp = new XMLHttpRequest();
  15.             else
  16.                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  17.  
  18.             xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
  19.             xmlhttp.send();
  20.  
  21.             hostipInfo = xmlhttp.responseText.split("\n");
  22.  
  23.             for (i=0; hostipInfo.length >= i; i++) {
  24.                 ipAddress = hostipInfo[i].split(":");
  25.             if ( ipAddress[0] == "IP" )
  26.                 return ipAddress[1];
  27.             }
  28.  
  29.             return false;
  30.        
  31.        
  32.        
  33.     </script>
Dejo las dos funciones para quien necesite la publica o la privada (recuerden no colocar las 2 con el mismo nombre o comentar una de las 2 cuando vayan a usar cualquiera), como les dije esto me funciono a mi con smartGwt/Gwt + eclipse y simplemente quería compartirlo, no se si el post encaja acá o si ya existen otros con información similar así que siéntanse libres de eliminarlo, molerlo etc etc en caso de ser necesario.
  #2 (permalink)  
Antiguo 09/10/2012, 14:34
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Te recomiendo que en la medida de lo posible intentes evitar el uso de métodos nativos, más que nada por si le pasan una herramienta de supervisión de calidad de código (como Sonar), porque esos métodos incumplen una de las reglas de calidad para portabilidad, aunque en realidad no sea cierto, ya que muchas de las librerías asociadas a GWT usan métodos nativos.

A lo que me refiero, si puedes hacerlo usando código java con llamadas a clases, interfaces y métodos de GWT, evita el uso de métodos nativos.

Un saludo.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 09/10/2012, 14:37
Avatar de arrakshe  
Fecha de Ingreso: septiembre-2012
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Muchas gracias por la recomendación, es algo nuevo para mi como estoy empezando con GWT :D, a futuro lo tomare en cuenta.
  #4 (permalink)  
Antiguo 19/10/2012, 13:10
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Cita:
Iniciado por Fuzzylog Ver Mensaje
Te recomiendo que en la medida de lo posible intentes evitar el uso de métodos nativos, más que nada por si le pasan una herramienta de supervisión de calidad de código (como Sonar), porque esos métodos incumplen una de las reglas de calidad para portabilidad, aunque en realidad no sea cierto, ya que muchas de las librerías asociadas a GWT usan métodos nativos.

A lo que me refiero, si puedes hacerlo usando código java con llamadas a clases, interfaces y métodos de GWT, evita el uso de métodos nativos.

Un saludo.
Hay un montón de cosas que no se pueden hacer con GWT sin tirar de JSNI. Muchos proyectos importantes basados en js están siendo portados a GWT, pero hay aún una cantidad enorme de proyectos no portados; o incluso habiendo sido portados no contienen la totalidad de las funciones del original.

En cuanto quieres hacer algo medio interesante con GWT tienes que usar JSNI y llamar a js nativo. Por ejemplo muchos efectos de JQuery que no están en gwt-query, o muchas cosas de Twitter Bootstrap que no están en gwt-bootstrap.
  #5 (permalink)  
Antiguo 29/07/2013, 04:47
 
Fecha de Ingreso: noviembre-2011
Mensajes: 13
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

¿Dónde escribiste el código?
  #6 (permalink)  
Antiguo 29/07/2013, 08:48
Avatar de arrakshe  
Fecha de Ingreso: septiembre-2012
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Esta en el primer comentario/post/hilo o como se llame, son las partes que dicen "Llamada desde smartGwt/Gwt:" , "Maetodo SmartGwt/Gwt:" y "Funcion JavaScript:"

Etiquetas: cliente, gwt, ip, smartgwt, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 21:45.