gpt4 book ai didi

java - 浏览器显示 IPv6,但查询返回 IPv4——为什么?

转载 作者:行者123 更新时间:2023-11-30 06:58:36 26 4
gpt4 key购买 nike

一些背景知识:为了学习/练习,我正在开发一个网络应用程序,我注意到只有当我向公共(public) IP 为 IPv4 的人提供 IPv4 地址,为公共(public) IP 为 IPv6 的人提供 IPv4 地址时,套接字才能正确打开是IPv6。

我想通过使用与以下类似的东西来选择正确的过滤器:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLException;

public class Test {
public static void main(String[] args) throws MalformedURLException, IOException {
BufferedReader ipTypeChecker = new BufferedReader(
new InputStreamReader(
new URL("https://wtfismyip.com/text").openStream()
)
);

System.out.println(ipTypeChecker.readLine());
}
}

如果我简单地用谷歌搜索我的 IP 是什么,请转到 this pagethis page ,我的 IP 显示为 IPv6 地址,但如果我使用上述代码查询这些页面,它会返回 IPv4 地址,为什么?

当然,如果我患有 XY problem随时指出我哪里出错了。

最佳答案

根据 the documentation如果两者都可用,Java 更喜欢 IPv4 地址而不是 IPv6 地址:

java.net.preferIPv6Addresses (default: false)

If IPv6 is available on the operating system the default preference is to prefer an IPv4-mapped address over an IPv6 address. This is for backward compatibility reasons...

目标主机有两种类型的地址:

wtfismyip.com.          3600    IN      AAAA    2604:4300:a:2c::1:1
wtfismyip.com. 3600 IN A 69.30.217.90

这意味着 Java 将选择 IPv4 地址。浏览器通常更喜欢 IPv6。

关于java - 浏览器显示 IPv6,但查询返回 IPv4——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32534761/

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