web-dev-qa-db-fra.com

L'utilisation de request.getRemoteAddr () renvoie 0: 0: 0: 0: 0: 0: 0: 1

J'essaie d'imprimer l'adresse IP de l'utilisateur connecté dans mon application Web. Si un utilisateur se connecte à partir d'un autre PC (situé sur le même réseau que l'application Web exécutée dans mon ordinateur) à l'aide de l'adresse IP 192.168.10.120:8080/WebApplication, Utilisez le code request.getRemoteAddr() ou request.getLocalAddr()). renvoie son adresse IP. Lorsque je me connecte à partir de mon ordinateur exécutant l’application Web, j’obtiens cette adresse IP 0: 0: 0: 0: 0: 0: 0: 1.

Pourquoi donc? Et quelle est la différence entre ces commandes (que devrais-je utiliser?). Merci beaucoup!

43
yaylitzis

Dans votre cas, comme vous essayez d'y accéder sur votre ordinateur local, il retournera cette valeur. Mais laissez l’un de vos amis y accéder et vous recevrez le résultat attendu avec getRemoteAddr

Du javadoc:

getRemoteAddr - Retourne l'adresse IP du client ou du dernier proxy qui a envoyé la demande

getLocalAddr - Retourne l'adresse IP de l'interface sur laquelle la demande a été reçue.

47
Abubakkar

Lorsque nous passons d'IPv4 vers IPv6, ils modifient l'adresse de boucle (localhost) en 0:0:0:0:0:0:0:1 À partir de 127.0.0.1, Raison pour laquelle vous obtenez cette adresse.

En ce qui concerne les fonctions:

  • getRemoteAddr() renvoie l'adresse IP du client

  • getLocalAddr() renvoie l'adresse IP du serveur sur lequel l'application est exécutée

41
Robert Pounder

( getRemoteAddr () résout votre problème, mais si le client est derrière un proxy, vous obtiendrez l'adresse IP du proxy:

Renvoie l'adresse IP (Internet Protocol) du client ou du dernier proxy qui a envoyé la demande.

getLocalAddr () renvoie l'adresse IP du serveur sur lequel l'application est exécutée.

6
Ankur Lathi