如何在不联系以下任何网站的情况下,仅使用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,如果是,它们是什么?
答案 0 :(得分:3)
假设您在使用NAT的典型家庭环境(计算机 - 路由器 - 互联网)中,您无法从本地计算机上运行的程序获取该地址(如83.154.48.7)。您可以做的最多就是获取安装在其上的网络适配器的地址(地址如192.0.0.1),因为“外部”地址实际上是路由器的地址。
您需要询问外部网站,因为他们将回答路由器的地址(83.154.48.7),路由器会将答案发送到您的电脑。
可能性是询问路由器的IP,但从PC上看,路由器的网络地址为192.0.0.255。 (不知道你是否可以在路由器中获取所有地址并过滤它们)
如果有一天这个网站倒闭,我会遇到很大问题。
您可以拥有一个可以从中获取地址的网站列表,然后逐个尝试,直到其中一个网站启动。