JAVA获取IP地址[重复]

Posted

技术标签:

【中文标题】JAVA获取IP地址[重复]【英文标题】:JAVA get IP address [duplicate] 【发布时间】:2013-12-04 21:18:11 【问题描述】:

我正在开发一个安卓应用,需要知道设备ip。

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

所以我正在与发送 ip 的服务器建立 HTTP 连接。

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

请帮忙。

谢谢。

【问题讨论】:

见how to get ip address of the device 【参考方案1】:

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

假设你想为你找到的第一个非环回接口获取 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地址[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取IP和MAC地址[重复]

获取用户IP地址的功能[重复]

无需打开注册全局变量即可获取 IP 地址 [重复]

在PHP中获取本地机器IP地址[重复]

从IP地址获取地理位置[重复]

获取本地主机IP地址[重复]