文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中获取当前服务器的IP地址

2023-09-02 16:08

关注

获取ip的第一反应就是:使用InetAddress这个类:方法如下

InetAddress.getLocalHost().getHostAddress();
public static void main(String[] args) {        try {            //用 getLocalHost() 方法创建的InetAddress的对象            InetAddress address = InetAddress.getLocalHost();            System.out.println(address.getHostName());//主机名            System.out.println(address.getCanonicalHostName());//主机别名            System.out.println(address.getHostAddress());//获取IP地址            System.out.println("===============");                        //用域名创建 InetAddress对象            InetAddress address1 = InetAddress.getByName("www.wodexiangce.cn");            //获取的是该网站的ip地址,如果我们所有的请求都通过nginx的,所以这里获取到的其实是nginx服务器的IP地址            System.out.println(address1.getHostName());//www.wodexiangce.cn            System.out.println(address1.getCanonicalHostName());//124.237.121.122            System.out.println(address1.getHostAddress());//124.237.121.122            System.out.println("===============");                        //用IP地址创建InetAddress对象            InetAddress address2 = InetAddress.getByName("220.181.111.188");            System.out.println(address2.getHostName());//220.181.111.188            System.out.println(address2.getCanonicalHostName());//220.181.111.188            System.out.println(address2.getHostAddress());//220.181.111.188            System.out.println("===============");                        //根据主机名返回其可能的所有InetAddress对象            InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");            for (InetAddress addr : addresses) {                System.out.println(addr);                //www.baidu.com/220.181.111.188                //www.baidu.com/220.181.112.244            }        } catch (UnknownHostException e) {            e.printStackTrace();        }    }

可以知道此时获取到的服务器如果加了代理方式就是获取到代理的地址,一般会使用netty代理转发。

      @SuppressWarnings("unchecked")     public static String  getServerIp(){         String SERVER_IP = null;         try {             Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();             InetAddress ip = null;             while (netInterfaces.hasMoreElements()) {                 NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();                 ip = (InetAddress) ni.getInetAddresses().nextElement();                 SERVER_IP = ip.getHostAddress();                 if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()                         && ip.getHostAddress().indexOf(":") == -1) {                     SERVER_IP = ip.getHostAddress();                     break;                 } else {                     ip = null;                 }             }         } catch (SocketException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }          return SERVER_IP;     }

我的解决死方法(方法是死的,但是能解决问题^_^)

在nacos的配置里面新建一个

constant.ipHost=服务器的ip
//获取服务器的ip@Value("${constant.ipHost}")private String ipHost;

来源地址:https://blog.csdn.net/qq_40453972/article/details/129417419

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯