Obtener la IP que invoca al servlet

12/Ene/2008 Java , , , 8 Comentarios

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

Vídeos sobre Java Servlet


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

8 comentarios en “Obtener la IP que invoca al servlet”

Víctor Cuervo

Víctor Cuervo

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

Víctor Cuervo

Miguel

este codigo recupera la direccion ip del proxy,:S

Víctor Cuervo

Dudia

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

Víctor Cuervo

Fabian Pinillos

gracias

Víctor Cuervo

Fabian Pinillos

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

Víctor Cuervo

Pedro

Me parece muy bueno gracias por la ayuda

Víctor Cuervo

cc

y para obtener la ip del usuario final?

Víctor Cuervo

Damian

Me parece interesante gracias por la info…

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*