【发布时间】:2014-11-07 15:42:48
【问题描述】:
在我的应用程序中,我经常使用 InetAddress.getByName() 将诸如“192.168.1.56”之类的字符串转换为 InetAddress 对象——主要是因为在我看来,将 IP 地址存储为 IP 地址而不是一个好主意而不是作为字符串。到现在为止,我还发誓这也是万无一失的,但今天我发现了一个错误。这不起作用:
InetAddress ia = InetAddress.getByName ("192.168.1.056");
我的 Android 似乎认为该字符串是主机名,因此它试图查找它(这是不可能的,因为它不在“真实”网络上)。这是我可以解决的问题 - 意思是有没有办法坚持 getByName 这是一个 IP 地址,而不是主机名?或者我是否需要构建方法来清除 IP 地址字符串中的前导零?或者是否有埋在某处的 Apache 实用程序可以做得更好?
【问题讨论】:
-
你得到什么错误?此外,某些实现会将前导零作为八进制值处理,这不是您想要的。不确定这个。
-
查看这个问题和答案:stackoverflow.com/questions/9556978/…
-
我得到的错误是 NetworkOnMainThread——这让我相信该软件正在将字符串视为主机名并通过网络尝试解决它——这既不可能也不可能正确的事情。抱歉,帖子不完整。
-
Anas:我做过,但这似乎与这个问题无关。我的地址字符串中有 4 个数字,分别验证为实际 BE 和 IP 地址(使用 java.util.regex.Pattern)。
-
你能发布堆栈跟踪吗?
标签: java android inetaddress