InetAddress.getLocalHost().getHostAddress() 和 InetAddress.getLocalHost().getAddress() 有啥区别?

Posted

技术标签:

【中文标题】InetAddress.getLocalHost().getHostAddress() 和 InetAddress.getLocalHost().getAddress() 有啥区别?【英文标题】:What's the difference between InetAddress.getLocalHost().getHostAddress() and InetAddress.getLocalHost().getAddress()?InetAddress.getLocalHost().getHostAddress() 和 InetAddress.getLocalHost().getAddress() 有什么区别? 【发布时间】:2019-05-20 03:19:13 【问题描述】:

代码如下:

       `InetAddress me = InetAddress.getLocalHost();
        System.out.println("Local host address: " + me.getHostAddress());
        System.out.println("Adress: " + Arrays.toString(me.getAddress()));`

而且两个输出的地址不一样,为什么?

或者一个更好的问题:这两者之间有什么区别?

【问题讨论】:

【参考方案1】:

getHostAddress()getAddress() 返回相同的信息,它们之间的唯一区别是信息表示。

getHostAddress() 返回字符串,这是人类可读的文本。比如在我的电脑里是"192.168.29.106"

getAddress(),另一方面,返回一个字节数组(在 IPv4 的情况下为 4 个字节)。比如在我的电脑里是[-64, -88, 29, 106]——-64是字节0xC0 (11000000)的有符号表示,如果是无符号则表示192,而-88表示0xA8 (10101000),如果是则表示168未签名。 29 代表字节 0x1D106 代表字节 0x6A

"192.168.29.106"0xC0 0xA8 0x1D 0x6A,它们是同一个东西。

【讨论】:

以上是关于InetAddress.getLocalHost().getHostAddress() 和 InetAddress.getLocalHost().getAddress() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

InetAddress.getLocalHost()详解及异常处理

InetAddress.getLocalHost().getHostName() JDK 11 和 JDK 8 之间的不同行为

在linux下用 java 输出 InetAddress.getLocalHost();的结果是啥?

为啥 InetAddress.getLocalHost().getHostName() 返回与 bash“主机名”不同的值?

java InetAddress.getLocalHost();返回 127.0.0.1 ...如何获得真实 IP?

InetAddress.getLocalHost().getHostAddress()获取的ip为127.0.0.1