Как получить клиентский адрес Ip ​​в Java HttpServletRequest

Я пытаюсь разработать веб-приложение Java (Servlet), которое мне нужно для получения IP-адреса клиентов.

Пожалуйста, не рассматривайте это как повторяющийся вопрос, потому что я пробовал все возможные ответы, которые доступны в stackoverflow.

Ниже приведен мой код:

1)

String ipAddress =  request.getRemoteAddr();

В этом случае большую часть тома я получаю "Адрес шлюза по умолчанию" (147.120.1.5). не мой IP-адрес устройства (174.120.100.17).

2)

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

В этом случае большую часть тома я получаю "Адрес шлюза по умолчанию" (147.120.1.5). не мой IP-адрес устройства (174.120.100.17).

3)

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

В этом случае я получил IP-адрес сервера (147.120.20.1).

Мой IP-адрес в 147.120.100.17.Нет, я не знаю, как получить реальный IP-адрес клиента. Пожалуйста, сделайте ответ.

Большое спасибо.

Ответ 2

В случае, если вы пытаетесь получить IP-адрес для Dev-среды, вы можете использовать это: -

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

request.getLocalAddr() вернет IP-адрес системы приема запросов.

Надеюсь, поможет.

Ответ 3

Попробуй это. для всех условий

  private static final String[] HEADERS_TO_TRY = {
            "X-Forwarded-For",
            "Proxy-Client-IP",
            "WL-Proxy-Client-IP",
            "HTTP_X_FORWARDED_FOR",
            "HTTP_X_FORWARDED",
            "HTTP_X_CLUSTER_CLIENT_IP",
            "HTTP_CLIENT_IP",
            "HTTP_FORWARDED_FOR",
            "HTTP_FORWARDED",
            "HTTP_VIA",
            "REMOTE_ADDR"};

    private String getClientIpAddress(HttpServletRequest request) {
        for (String header : HEADERS_TO_TRY) {
            String ip = request.getHeader(header);
            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
                return ip;
            }
        }
        return request.getRemoteAddr();
    }

Ответ 4

 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);     
}
}

Вывод:

IP address of localhost from Java Program: 190.12.209.123
Name of hostname : PCLOND3433