public class InetAddresTest {
public static void main(String ... agrs) {
try {
InetAddress inet = InetAddress.getByName("1.2");
System.out.println("Good ip address");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
BTW InetAddress生成的ip地址返回为“1.0.0.2”。我无法从InetAddress的javadoc中找到合理的答案。你能解释一下这种行为吗?
答案 0 :(得分:8)
来自Javadoc中的Javadoc for InetAddress(链接在“{3}}中的”IP地址的文字表示“中:
当提供两部分地址时,最后一部分被解释为24位数量并放在网络地址的最右边三个字节中。这使得两部分地址格式便于将A类网络地址指定为net.host。
编辑添加:如果24位部分让您感到困惑:
24位的 2
看起来像:00000000 00000000 00000010
然后将其映射到IPv4地址中右边的3个八位字节:.0.0.2
再一次:正如CoolBeans在对你的问题的评论中提到的那样,来自Apache公共的InetAddressValidator就可以了。话虽这么说,如果你只是想验证IP地址而没有外部依赖,你可以使用Regular Expressions to check IP addresses as well