Client
以下の方法でIPアドレスを取得しています:
public static String getClientIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
...
return ip
}
IPV4
今、それがまたはであるかどうかを検出したいと思いますIPV6
。
Client
以下の方法でIPアドレスを取得しています:
public static String getClientIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
...
return ip
}
IPV4
今、それがまたはであるかどうかを検出したいと思いますIPV6
。
InetAddress を作成し、それが ipv4 または ipv6 インスタンスになったかどうかを確認できます
InetAddress address = InetAddress.getByName(ip);
if (address instanceof Inet6Address) {
// It's ipv6
} else if (address instanceof Inet4Address) {
// It's ipv4
}
少し面倒なようですが、より良い解決策があることを願っています。
IPv4 または IPv6 のいずれかを取得していることが確実な場合は、次のことを試すことができます。DNS 名がある場合、これはルックアップを実行しようとします。とにかく、これを試してください:
try {
InetAddress address = InetAddress.getByName(myIpAddr);
if (address instanceof Inet4Address) {
// your IP is IPv4
} else if (address instanceof Inet6Address) {
// your IP is IPv6
}
} catch(UnknownHostException e) {
// your address was a machine name like a DNS name, and couldn't be found
}