Cómo obtener la dirección IP del cliente en Java HttpServletRequest

Estoy tratando de desarrollar una aplicación web Java (Servlet) que necesito para obtener la dirección IP de los clientes.

Por favor, no considere esto como una pregunta duplicada porque he intentado todas las posibles respuestas que están disponibles en el stackoverflow.

Lo siguiente es mi código hasta ahora:

1)

String ipAddress =  request.getRemoteAddr();

En este caso, la mayoría de las veces me sale la dirección de la puerta de enlace predeterminada (147.120.1.5) y no la dirección IP de mi máquina (174.120.100.17).

2)

String ipAddress = request.getHeader("X-FORWARDED-FOR");  
   if (ipAddress == null) {  
       ipAddress = request.getRemoteAddr();  
   } 

En este caso, la mayoría de las veces me sale la dirección de la puerta de enlace predeterminada (147.120.1.5) y no la dirección IP de mi máquina (174.120.100.17).

3)

InetAddress IP=InetAddress.getLocalHost();
System.out.println(IP.getHostAddress());

En este caso obtuve la dirección IP del servidor(147.120.20.1).

Mi dirección IP en 147.120.100.17.Ahora no sé cómo obtener la dirección IP del cliente real. Por favor, haga una respuesta.

Muchas Gracias.

Solución

Prueba este,

    String ipAddress = request.getHeader("X-FORWARDED-FOR");  
       if (ipAddress == null) {  
         ipAddress = request.getRemoteAddr();  
   }

referencia : http://www.mkyong.com/java/how-to-get-client-ip-address-in-java/

Comentarios (2)

En caso de que esté intentando obtener la dirección IP para el entorno de desarrollo, puede utilizar esto:-

public String processRegistrationForm(HttpServletRequest request)
{
    String appUrl = request.getScheme() + "://"+ request.getLocalAddr();
    return appUrl;
}

El request.getLocalAddr() devolverá la dirección IP del sistema receptor de la solicitud.

Espero que te sirva de ayuda.

Comentarios (0)
 import java.net.UnknownHostException;

/**
 * Simple Java program to find IP Address of localhost. This program uses
 * InetAddress from java.net package to find IP address.
 *
 */
public class IPTest { 

public static void main(String args[]) throws UnknownHostException {

    InetAddress addr = InetAddress.getLocalHost();

    //Getting IPAddress of localhost - getHostAddress return IP Address
    // in textual format
    String ipAddress = addr.getHostAddress();

    System.out.println("IP address of localhost from Java Program: " + ipAddress);

    //Hostname
    String hostname = addr.getHostName();
    System.out.println("Name of hostname : " + hostname);     
}
}

Salida:

IP address of localhost from Java Program: 190.12.209.123
Name of hostname : PCLOND3433
Comentarios (1)