黑马程序员技术交流社区

标题: IP疑惑 [打印本页]

作者: --☆伟☆--    时间: 2012-6-3 20:50
标题: IP疑惑
        public static void main(String[] args) throws Exception
        {
                InetAddress i=InetAddress.getByName("WILL-PC");
                InetAddress p=InetAddress.getByName("192.168.0.16");
                System.out.println(i.toString());
                System.out.println(p.toString());
        }
运行结果:
WILL-PC/192.168.0.16
/192.168.0.16
这里面的InetAddress p=InetAddress.getByName("192.168.0.16");其中的"192.168.0.16"不是IP地址么,为什么方法是getByName
还有定义的InetAddress()对象i和P有什么不同(两者调用toString方法后不同)
作者: 张亭    时间: 2012-6-3 21:01
本帖最后由 张亭 于 2012-6-3 21:04 编辑

楼主可以好好看下API文档:
public static InetAddress getByName(String host)
在给定主机名的情况下确定主机的 IP 地址。
主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。
对于以字面值 IPv6 地址指定的 host,在 RFC 2732 中定义的形式或在 RFC 2373 中定义的字面值 IPv6 地址格式都可以接受。IPv6 范围地址也受支持。

i是通过主机名的方式得出的,hostname="WILL-PC"
p是通过ip地址得出的,hostname=null
另外,InetAddress 类复写了toString方法:
    public String toString() {
        return ((hostName != null) ? hostName : "") + "/" + getHostAddress();
    }
就是说,有hostName 的话格式为:hostName /ip地址
没有的话: /ip地址






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2