gpt4 book ai didi

java - 使用Java获取外部IP地址

转载 作者:行者123 更新时间:2023-12-01 23:40:32 25 4
gpt4 key购买 nike

如何仅使用 Java 获取计算机的外部 IP,而不联系任何网站,如下所示:

String ip = "";

try
{

URL whatismyip;

whatismyip = new URL("http://checkip.amazonaws.com");

BufferedReader in = null;

in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

ip = in.readLine();

} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (MalformedURLException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}

我不希望这样的原因是,如果这个网站关闭一天,我就会遇到大问题。

编辑:

把问题定义得更清楚一点:Java有没有方法可以获取用户的机器IP,如果有的话,它们是什么?

最佳答案

假设您处于使用 NAT 的典型家庭环境(计算机 - 路由器 - 互联网)中,您无法从本地计算机中运行的程序获取该地址(例如 83.154.48.7)。您最多可以获取安装在其上的网络适配器的地址(例如 192.0.0.1 之类的地址),因为“外部”地址实际上是路由器的地址。

您需要询问外部站点,因为他们会回答路由器的地址(83.154.48.7),并且路由器会将答案发送到您的电脑。

一种可能是向路由器询问其 IP,但从 PC 来看,路由器将拥有该网络的类似 192.0.0.255 的地址。 (不知道你是否可以获取路由器中的所有地址并过滤它们)

For if one day this site down, I will have big problems.

您可以拥有一个可以从中获取地址的网站列表,并逐一尝试,直到其中一个可用为止。

关于java - 使用Java获取外部IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023221/

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