gpt4 book ai didi

JAVA获取IP地址

转载 作者:行者123 更新时间:2023-12-02 06:30:29 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,需要知道设备 IP。

我尝试过Inet4Address.getLocalHost().getHostAddress()但它给出了 127.0.0.1 .

因此,我正在与发回 IP 的服务器建立 HTTP 连接。

但是,当设备和请求的服务器之间存在网关时,此过程会产生问题。在这种情况下,我没有获取网络的设备 ip,而是获取网关 ip。

请帮忙。

谢谢。

最佳答案

首先,您可能有多个网络接口(interface),其中一个是 lo。其次,您可能同时设置了 ipv4 和 ipv6,即每个网络接口(interface)有多个 IP 地址。因此,您需要定义将使用的 IP 地址和网络接口(interface),然后创建过滤器。如果您只获取第一个地址,您将得到与 Inet4Address.getLocalHost().getHostAddress()

之后相同的结果

假设您想要获取找到的第一个非环回接口(interface)的 ipv4(ipv6) 地址。然后,以下代码给出 ip:

static InetAddress ip() throws SocketException {
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
NetworkInterface ni;
while (nis.hasMoreElements()) {
ni = nis.nextElement();
if (!ni.isLoopback()/*not loopback*/ && ni.isUp()/*it works now*/) {
for (InterfaceAddress ia : ni.getInterfaceAddresses()) {
//filter for ipv4/ipv6
if (ia.getAddress().getAddress().length == 4) {
//4 for ipv4, 16 for ipv6
return ia.getAddress();
}
}
}
}
return null;
}

public static void main(String[] args) throws SocketException {
System.out.println(ip());
}

关于JAVA获取IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103428/

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