gpt4 book ai didi

java - 使 Java 报告 IPv6 地址而不是 IPv4

转载 作者:行者123 更新时间:2023-12-01 08:54:53 34 4
gpt4 key购买 nike

对于 Java 项目,我使用用户 IP 地址作为网站的唯一标识符。当用户只有 IPv4 地址时,一切正常。

但我的问题是,当用户拥有 IPv6 地址时,Java 将报告 IPv4 地址,而他们的浏览器将报告 IPv6 地址(在 PHP 中的 $_SERVER['REMOTE_ADDR'] 调用中)。

那么我如何让 Java 报告它的 IPv6 地址而不是 IPv4 ?

编辑:一些说明:

这仅用于允许一个人下载文件。如果几个人使用同一台电脑也没关系,并不重要。

假设用户访问 http://whatismyipaddress.com/使用 Chrome,它将显示 IPv6 地址。

但是如果我现在使用Java来获取http://whatismyipaddress.com/它将显示 IPv4 地址。这是为什么?我怎样才能让它显示 Chrome 中显示的 IPv6 地址?

编辑2:我使用的代码

public static String get(String url) throws WebFetchException {
String result = "";
try {
URL url1 = new URL(url);
HttpsURLConnection urlConn = (HttpsURLConnection) url1.openConnection();
urlConn.setConnectTimeout(8 * 1000);
urlConn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String text;
while ((text = in.readLine()) != null) {
result = result + text;
}
in.close();
}
} catch (Exception e) {
throw new WebFetchException("There was an exception while fetching the requested page: " + url);
}
return result;
}

最佳答案

IP 地址可以用作标识符的假设是错误的。越来越多的 ISP 正在部署某种形式的 NAT,因此许多用户将共享 IPv4 评估池。用户来自的地址可能会从一个连接更改为另一个连接,因此您不能依赖它的稳定性。

另一方面,更多的用户也获得了 IPv6,并且设备具有多个 IPv6 地址,这些地址会随着时间的推移而变化。

由于连接问题,用户也会在 IPv4 和 IPv6 之间切换。好吧,用户甚至不会注意到,他们的设备就会这样做。

因此依赖 IP 地址是行不通的。

关于java - 使 Java 报告 IPv6 地址而不是 IPv4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094630/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com