2014-12-02 54 views
1

嗨,大家好,我经历了很多编码上线让我的Android手机的IP地址了 他们大多是与获取IP地址,但在xxx.xxx.xxx.xxx格式

if (!inetAddress.isLoopbackAddress()) 
       { return inetAddress.getHostAddress().toString();  } 
结束

如何过我得到的东西看起来是这样的: - “FE80 :: A00:27FF:FE37:28b5%的eth1” 奇怪,因为我期待像xxx.xxx.xxx.xxx

一些能帮助一个我明白这是什么?

+0

见问题http://stackoverflow.com/questions/11015912/how-do-i-get-ip-address- in-ipv4-format – maveroid 2014-12-02 07:49:32

+0

是的。这是有道理的。 1最后一件事。 – Wadia 2014-12-02 07:58:22

回答

2

这是一个IPv6地址。此外,由于它始于fe80::,您知道它也是link-local IPv6 address,因此不能用于本地网络之外的通信。 (在这种情况下,eth1,因为这是%后结束指定的范围 - 但是请注意,使用IPv6地址时使用%识别范围并不总是有效)

+0

太棒了!现在这就是我所做的 - 我得到了手机(服务器)的Ipv6地址并将其放置在我的模拟器(客户端)中,但未能连接。然后,我做了旧时尚的方式xxx.xxx.xxx.xxx格式,它连接!因此,我可以通过任何方式直接获取旧格式,因为此Ipv6不能以任何方式工作? – Wadia 2014-12-02 09:07:16

+0

@Wadia,有许多可能的方法来过滤不需要的IPv6地址(请参阅此问题的其他答案)。我看到的一种方法是检查地址中是否存在“:”。如果是这样,它是一个IPv6地址。 – mpontillo 2014-12-02 14:25:34

1

尝试java.net.Inet4Address代替。

1

它返回的IPV6地址。

检查返回结果前是否为其IPV4地址。

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

希望这会有所帮助。

0

这将以等宽字体显示。前四个空格 将被剥离,但所有其他空格将被保留。

Markdown and HTML are turned off in code blocks: 
<i>This is not italic</i>, and [this is not a link](http://example.com) 

要创建不是一个块,而是内嵌码跨度,使用反引号:

$角色仅仅是window.jQuery一个快捷方式。 如果要在列表中设置预先格式化的块,请按八个空格缩进:

  1. 这是正常文本。
  2. 原来是这样,但现在如下代码块:

    Skip a line and indent eight spaces. 
    That's four spaces for the list 
    and four to trigger the code block.