ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

【Linux】Java获取Linux本机ip为127.0.0.1的解决方法

2022-08-15 00:02:23  阅读:187  来源: 互联网

标签:127.0 Java 0.1 ip Linux 本机 localhost


前言

  • 参考博客: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地址上

    • [root@localdomain_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 Inet4api时获取到的ip地址不是我们想要的了

解决办法

  • 使用hostnamectl set-hostname命令手动指定本机名称, 避免与/ect/hosts文件中配置的名称重复
  • 这样我们在使用Inet4Address.getLocalHost().getHostAddress()方法就会被正确解析成对外的ip地址了
    • hostnamectl set-hostname xxxx
    • 可以使用ping xxxx来查看解析的ip地址,应该已不是127.0.0.1,而是对外ip

标签:127.0,Java,0.1,ip,Linux,本机,localhost
来源: https://www.cnblogs.com/suhai/p/16586739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有