【问题标题】: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()));`
而且两个输出的地址不一样,为什么?
或者一个更好的问题:这两者之间有什么区别?
【问题讨论】:
标签:
network-programming
ip
【解决方案1】:
getHostAddress() 和getAddress() 返回相同的信息,它们之间的唯一区别是信息表示。
getHostAddress() 返回字符串,这是人类可读的文本。比如在我的电脑里是"192.168.29.106"。
getAddress(),另一方面,返回一个字节数组(在 IPv4 的情况下为 4 个字节)。比如在我的电脑里是[-64, -88, 29, 106]——-64是字节0xC0 (11000000)的有符号表示,如果是无符号则表示192,而-88表示0xA8 (10101000),如果是则表示168未签名。 29 代表字节 0x1D 和 106 代表字节 0x6A。
"192.168.29.106" 或 0xC0 0xA8 0x1D 0x6A,它们是同一个东西。