web-dev-qa-db-fra.com

Comment obtenir l'adresse IP du client en Java HttpServletRequest

J'essaie de développer une application Web Java (Servlet) dont j'ai besoin pour obtenir l'adresse IP des clients.

S'il vous plaît ne considère pas cela comme une question en double, car j'ai essayé toutes les réponses possibles qui sont disponibles dans le stackoverflow. 

Voici mon code jusqu'à présent:

1)

String ipAddress =  request.getRemoteAddr();

Dans ce cas, la plupart du tome que je reçois est l'adresse de la passerelle par défaut (147.120.1.5). pas l'adresse IP de ma machine (174.120.100.17).

2)

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

Dans ce cas, la plupart du tome que je reçois est l'adresse de la passerelle par défaut (147.120.1.5). pas l'adresse IP de ma machine (174.120.100.17).

3)  

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

Dans ce cas, j'ai l'adresse IP du serveur (147.120.20.1).

Mon adresse IP dans 147.120.100.17.Maintenant, je ne sais pas comment obtenir la véritable adresse IP du client. S'il vous plaît faire une réponse.

Merci beaucoup.

15
Samith Dilshan

Essaye celui-là,

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

référence: http://www.mkyong.com/Java/how-to-get-client-ip-address-in-Java/

37
gihan

Dans le cas où vous essayez d'obtenir l'adresse IP de l'environnement de développement, vous pouvez utiliser ceci: - 

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

La request.getLocalAddr() renverra l'adresse IP du système récepteur de la demande. 

J'espère que ça aide.

0
Partha Mondal