gpt4 book ai didi

java - 如何在java中仅获取公共(public)IP地址

转载 作者:行者123 更新时间:2023-12-02 06:24:15 27 4
gpt4 key购买 nike

我在 stackoverflow 上看到了一些关于这个问题的答案。我的代码的主要区别在于,它通过在找到环回接口(interface)或点对点连接的 IP 时继续执行操作,仅获取公共(public) IP 地址。

观察:我正在与本地主机的 IP 进行比较,因为我有 VirtualBox,本地主机是用于与该机器通信的 IP。我试图理解为什么。该方法返回一个字符串,但它很可能是 InetAddress。反馈总是受欢迎的。谢谢:)

最佳答案

private String getPublicIpAddress() {
String res = null;
try {
String localhost = InetAddress.getLocalHost().getHostAddress();
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) e.nextElement();
if(ni.isLoopback())
continue;
if(ni.isPointToPoint())
continue;
Enumeration<InetAddress> addresses = ni.getInetAddresses();
while(addresses.hasMoreElements()) {
InetAddress address = (InetAddress) addresses.nextElement();
if(address instanceof Inet4Address) {
String ip = address.getHostAddress();
if(!ip.equals(localhost))
System.out.println((res = ip));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
}

关于java - 如何在java中仅获取公共(public)IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714276/

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