在Android中以xxx.xxx.xxx.xxx格式获取IP地址

在Android中以xxx.xxx.xxx.xxx格式获取IP地址,android,Android,嗨,伙计们,为了得到我的安卓手机IP地址,我在网上做了很多编码 他们中的大多数人都以失败告终 if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } 我怎么会得到这样的东西:-“fe80::a00:27ff:fe37:28b5%eth1” 奇怪,因为我期待着像xxx.xxx.xxx.xxx这样的东西 有人能帮我理解这是什么吗?这是

嗨,伙计们,为了得到我的安卓手机IP地址,我在网上做了很多编码 他们中的大多数人都以失败告终

if (!inetAddress.isLoopbackAddress())
                { return inetAddress.getHostAddress().toString();     } 
我怎么会得到这样的东西:-“fe80::a00:27ff:fe37:28b5%eth1” 奇怪,因为我期待着像xxx.xxx.xxx.xxx这样的东西


有人能帮我理解这是什么吗?

这是一个IPv6地址。此外,由于它以fe80开头::您知道它也是一个,因此不能用于本地网络以外的通信。(在本例中,
eth1
,因为这是在
%
后面的末尾指定的范围-但请注意,使用
%
标识范围在使用IPv6地址时并不总是有效。)

这是IPv6地址。此外,由于它以fe80开头::您知道它也是一个,因此不能用于本地网络以外的通信。(在本例中,
eth1
,因为这是在
%
后面的末尾指定的范围-但请注意,使用
%
标识范围在使用IPv6地址时并不总是有效。)

尝试
java.net.Inet4Address

尝试
java.net.Inet4Address

其返回的IPV6地址

在返回结果之前检查其IPV4地址是否正确

if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
    return inetAddress.getHostAddress().toString(); 
}

希望这有帮助。

它返回的IPV6地址

在返回结果之前检查其IPV4地址是否正确

if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
    return inetAddress.getHostAddress().toString(); 
}

希望这有帮助。

请参见问题“是”。现在这是有道理的。最后一件事。见问题“是”。现在这是有道理的。最后一件事,太好了!现在我做的是——我得到了我手机(服务器)的这个Ipv6地址,并将它放在我的模拟器(客户端)中,但它无法连接。然后我用老的方式做了,xxx.xxx.xxx.xxx格式,它连接起来了!因此,我是否可以直接获得旧格式,因为这个Ipv6没有任何工作方式?@Wadia,有许多可能的方法可以过滤掉不需要的Ipv6地址(请参阅此问题的其他答案)。我看到的一种方法是检查地址中是否存在
。如果是这样,那就是IPv6地址。太好了!现在我做的是——我得到了我手机(服务器)的这个Ipv6地址,并将它放在我的模拟器(客户端)中,但它无法连接。然后我用老的方式做了,xxx.xxx.xxx.xxx格式,它连接起来了!因此,我是否可以直接获得旧格式,因为这个Ipv6没有任何工作方式?@Wadia,有许多可能的方法可以过滤掉不需要的Ipv6地址(请参阅此问题的其他答案)。我看到的一种方法是检查地址中是否存在
。如果是的话,它是一个IPv6地址。