jump to navigation

Obtener la IP que invoca al servlet Enero 12, 2008

Publicado por lineadecodigo en : Java , trackback

Mediante el siguiente código podremos recuperar la IP del usuario que está realizando la petición sobre el servlet. Dadas todas las circunstancias que pueden rodear a la topología de las redes la IP que obtendremos no tiene porque ser la IP del usuario final, sino que fácilmente podría ser la IP de un proxy intermedio,... Es por ello que el ejemplo hay que utilizarle con fines didácticos y si lo usamos para producción, con un gran cuidado.

La IP de la máquina que invoca es una información que al servlet le llega en la petición, consecuentemente sus métodos doGet y doPost lo tendrán en el objeto HttpServletRequest.

Los métodos que nos permiten recuperar la información de la IP y el nombre de la máquina peticionaria son: getRemoteHost() y getRemoteAddr(). Simplemente les invocamos sobre el método HttpServletRequest.

  1. String ip = null; // IP del cliente
  2. String host = null; // Host del cliente
  3.  
  4. ip = request.getRemoteAddr();
  5. host = request.getRemoteHost();

Una vez obtenida la información, simplemente tendremos que devolverla por respuesta. Para ello nos apoyamos sobre los objetos PrintWriter y HttpServletResponse.

Veamos el código:

  1. PrintWriter out = response.getWriter();
  2. response.setContentType("text/html");
  3.  
  4. out.println("<html><head><title>Obtener IP del cliente</title></head><body>");
  5. out.println("<strong>Obtener la IP del cliente </strong>");
  6. out.println("La ip del cliente es " + ip + "<br>");
  7. out.println("El host del cliente es " + host);
  8. out.println("</body></html>");

Ver que el código que se devuelve en el stream de respuesta es una página web. De hecho, antes de devolver ninguna información indicamos que el content-type de respuesta es un "text/html".

Visualizar el ejemplo | Descargar el código

Articulos Similares:

Enviar entrada por email Enviar entrada por email | Imprimir Imprimir | 11016 visitas

1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, media: 5.00 de 5)
Loading ... Loading ...

Comentarios»

1. Damian - Junio 3, 2008

Me parece interesante gracias por la info…

2. cc - Octubre 1, 2008

y para obtener la ip del usuario final?

3. Pedro - Diciembre 3, 2008

Me parece muy bueno gracias por la ayuda

4. Fabian Pinillos - Enero 7, 2009

al utilizar esta función request.getRemoteHost(); me recupera la dirección ip, porque puede ser esto?

5. Fabian Pinillos - Enero 7, 2009

gracias

6. Dudia - Marzo 27, 2009

con request.getRemoteAddr(), recupera la direccion del servidor, no la del usuario. Como puedo obtener esta direccion

7. Miguel - Junio 2, 2009

este codigo recupera la direccion ip del proxy,:S

8. lineadecodigo - Junio 20, 2009

@Miguel,

Efectivamente. Esto recupera la IP de quien te realiza la petición. Si tienes un proxy te da la del proxy… Esto es un “problema” de las redes.

Ahora bien, están intentando estandarizar la cabecera x-forwarded-for para resolver estos temas y así saber quien es el peticionario original.


Imagen CAPTCHA CAPTCHA Audio
Refrescar imagen