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

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

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

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

1)

String ipAddress =  request.getRemoteAddr();

в этом случае большая часть Тома я получаю "адрес шлюза по умолчанию" (147.120.1.5). не моя машина ИС адрес(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-адрес клиента. Пожалуйста, ответьте.

спасибо много.

3 ответов


это

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

ссылка:http://www.mkyong.com/java/how-to-get-client-ip-address-in-java/


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

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

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

надеюсь, что это помогает.


 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