feed twitter facebook LinkedIn facebook

Java » Obtener la IP que invoca al servlet

Enero 12, 2008 por Víctor Cuervo . 16035 visitas 8 Comentarios Imprimir Imprimir

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

tags: , , , , , , , , , ,

Artículos relacionados:

8 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

  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.

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*