环境说明
1. centOS7
2. java 8
最近使用了一个全新的centOS虚拟机使用以下代码获取本机ip, 发现获取到的值为127.0.0.1
Inet4Address.getLocalHost().getHostAddress()
原因
linux系统不配置hostname的默认hostname为localhost, 此时使用java Inet4 API
会获取到错误的ip: 127.0.0.1
实际上此127.0.0.1是/etc/hosts下localhost这个hostname对应的地址, java Inet4 API 貌似会直接从此处获取ip, 返回错误结果
我本地linux虚拟机ect/hosts配置:
127.0.0.1 localhost localhost.localdomain
结论: 使用以下命令手动指定本机hostname, 不要让此hostname与/ect/hosts下配置的hostname重复, 否则会导致获取ip错误