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!
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.
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
( 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.