Java - Comment détecter les IP version
Je suis Client
adresse IP via la méthode ci-dessous :
public static String getClientIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
...
return ip
}
Maintenant, je veux détecter si c'est un IPV4
ou un IPV6
.
- Vous pouvez utiliser des regex comme indiqué ici java2s.com/Code/Java/Network-Protocol/...
- Sachez qu'à moins de X-Forwarded-For est définie par certains de votre serveur (Comme F5 BigIP) il ne peut pas faire confiance car il peut être réglé par le client à quelque chose.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une InetAddress et vérifier si elle est devenue une adresse ipv4 ou ipv6 instance
Il semble un peu maladroit, mais, et j'espère qu'il y est une meilleure solution.
Si vous êtes sûr que vous obtenez soit une adresse IPv4 ou IPv6, vous pouvez essayer ce qui suit. Si vous avez un nom DNS puis ce sera essayer d'effectuer une recherche. De toute façon, essayez ceci:
Inet4Address
àInet6Address
dans leelse
partie.Vous pouvez utiliser InetAddresses de google de goyave. Par exemple, comme ceci:
Grâce à Tala.
C'est ce que j'ai essayé à l'aide de cet exemple avec des changements mineurs:
instanceof
est plus efficace.instanceof
vous pouvez le vérifieraddress.getAddress().length
: 4 serait ipv4 et 16 serait ipv6 (mais je crois que je préfère lainstanceof
solution)