【Linux】Java获取Linux本机ip为127.0.0.1的解决方法
2022/8/16 5:26:15
本文主要是介绍【Linux】Java获取Linux本机ip为127.0.0.1的解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
- 参考博客:Java获取Linux本机ip为127.0.0.1的解决方法
- 最近新部署了一台服务器,环境搭建好后,运行相应的项目代码时,发现项目获取的服务器IP地址不是我想要的
- Java代码中使用了
Inet4Address.getLocalHost().getHostAddress()
方法自动获取本机IP,结果发现获取到的值是127.0.0.1,而不是对外的IP地址- 这里特此记录一下解决方法
原因
-
因为Linux中会默认使用
localhost
作为默认的hostname名称,也就是本机的名称- 这里可以使用
hostname
命令查看当前服务器的名称
- 这里可以使用
-
而在
/ect/hosts文件
中,localhost也分别被映射到了ipv4和ipv6这两个ip地址上-
[[email protected]_5 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
-
-
所以当我们在服务器中
ping localhost
时,实际解析得到的ip地址是/ect/hosts文件
中映射的ipv4地址,也就是127.0.0.1 -
因为Java获取IP时是通过本机hostname解析的,这也就解释了为什么在代码中使用
Java Inet4
的api
时获取到的ip地址不是我们想要的了
解决办法
- 使用
hostnamectl set-hostname
命令手动指定本机名称, 避免与/ect/hosts文件
中配置的名称重复 - 这样我们在使用
Inet4Address.getLocalHost().getHostAddress()
方法就会被正确解析成对外的ip地址了hostnamectl set-hostname xxxx
- 可以使用
ping xxxx
来查看解析的ip地址,应该已不是127.0.0.1,而是对外ip
这篇关于【Linux】Java获取Linux本机ip为127.0.0.1的解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-20测试人员都是画画大神,让我看看谁还不会用代码图?
- 2024-05-20年薪百万的程序员都在用的摸鱼方式……
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了