如何在JAVA中获取IP地址,就像以下链接中所示

6 浏览
0 Comments

如何在JAVA中获取IP地址,就像以下链接中所示

可能是重复问题:
\n如何在Java中获取用户的IP地址
\n如何使用URL字符串获取IP地址?(Java)
\n链接为:\"http://automation.whatismyip.com/n09230945.asp\"
\n上述链接返回外部IP。
\n我尝试编写自己的代码以获取我的IP,类似于上面的链接。
\n我的代码是:

String my_own_ip = InetAddress.getLocalHost().getHostAddress();

\n那么如何获取这个IP呢?
\n在这段代码中返回的是我的内部IP。
\n我在局域网连接中,我的局域网IP是192.168.0.109,而外部IP是27.54.180.156。
\n我想要的是27.54.180.156
\n提前感谢!

0
0 Comments

问题的出现原因是用户希望在Java中获取IP地址,类似于给出的链接中的示例代码。然而,给出的示例代码是在JSP页面中使用的,而用户没有提到他们正在使用JSP或任何其他类型的Web编程。此外,示例代码中使用的脚本片段被认为是不推荐使用的。

解决方法是使用Java代码来获取IP地址,而不是在JSP页面中使用脚本片段。下面是一种解决方法:

import java.net.InetAddress;
public class GetIPAddress {
    public static void main(String[] args) {
        try {
            InetAddress myIPAddress = InetAddress.getLocalHost();
            System.out.println("My IP Address: " + myIPAddress.getHostAddress());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用上述代码,可以在Java中获取IP地址。该代码将打印出计算机的IP地址。

0
0 Comments

问题出现的原因是假设计算机可以访问外部IP地址,但实际上不能。只有路由器和外部连接才能访问IP地址。

解决方法是使用类似于http://icanhazip.com或http://checkip.dyndns.org的网站(或者您提供的网站http://automation.whatismyip.com/n09230945.asp),并在Java客户端上使用HTTP Get连接到该网站,就像在这个问题或这个问题中所示。一旦收到HTML页面,解析它以找到IP地址。这可以使用正则表达式来完成,因为这些都是非常简单的HTML页面,不需要进行复杂的DOM解析。

找到一个可以无限次调用的免费API的关键是找到一个适合的网站。我上面列出的两个网站据我所知没有任何限制。

0
0 Comments

问题的原因是使用了错误的方法(getLocalHost())来获取IP地址,解决方法是使用正确的方法(getByName())来获取IP地址。以下是整理成的文章:

在Java中如何获取IP地址,就像下面的链接所示?

在Java中,如果你想获取一个网站的IP地址,你不能简单地使用getLocalHost()方法。这个方法将返回你的本地主机的IP地址,而不是你想要的网站的IP地址。

正确的方法是使用getByName()方法。这个方法接受一个字符串参数,该参数是你想要获取IP地址的网站的URL。然后,它将返回一个InetAddress对象,你可以使用它来获取所需的IP地址。

下面是一个示例代码:

InetAddress addy = InetAddress.getByName("www.stackoverflow.com");
System.out.println(addy.getHostAddress());

请注意,你需要省略URL中的协议(例如,http://)和路径。如果你包含了协议或路径,getByName()方法将抛出异常。

下面是一些错误的示例代码和它们的修复版本:

// 错误的示例代码
InetAddress addy = InetAddress.getByName("http://www.stackoverflow.com"); // 抛出异常
System.out.println(addy.getHostAddress());
// 修复后的示例代码
InetAddress addy = InetAddress.getByName("www.stackoverflow.com");
System.out.println(addy.getHostAddress());
// 错误的示例代码
InetAddress addy = InetAddress.getByName("www.stackoverflow.com/questions"); // 抛出异常
System.out.println(addy.getHostAddress());
// 修复后的示例代码
InetAddress addy = InetAddress.getByName("www.stackoverflow.com");
System.out.println(addy.getHostAddress());

通过使用正确的方法,你将能够获取到你想要的网站的IP地址。

0