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

 更新时间:2023年07月13日 09:57:10   作者:18你磊哥  
这篇文章主要给大家介绍了关于Java中如何获取当前服务器的IP地址的相关资料,我们可以使用Java中的InetAddress类来获取Linux服务器的IP地址,需要的朋友可以参考下

获取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代理转发。

 /**
      * 获取服务器IP地址
      * @return
      */
     @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;

总结

到此这篇关于Java中如何获取当前服务器的IP地址的文章就介绍到这了,更多相关Java获取服务器IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java常用工具类 IP、File文件工具类

    java常用工具类 IP、File文件工具类

    这篇文章主要为大家详细介绍了java常用工具类,包括IP、File文件工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Spring SseEmitter推送消息及常用方法

    Spring SseEmitter推送消息及常用方法

    SseEmitter 是 Spring Framework 提供的用于支持 Server-Sent Events(SSE)的类,它允许服务器端向客户端推送事件流,实现服务器到客户端的单向通信,这篇文章主要介绍了Spring SseEmitter推送消息,需要的朋友可以参考下
    2024-07-07
  • Mybatis条件if test如何使用枚举值

    Mybatis条件if test如何使用枚举值

    这篇文章主要介绍了Mybatis条件if test如何使用枚举值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 解决springboot 无法配置多个静态路径的问题

    解决springboot 无法配置多个静态路径的问题

    这篇文章主要介绍了解决springboot 无法配置多个静态路径的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java中jvm逃逸问题分析

    java中jvm逃逸问题分析

    本篇文章给大家详细总结了java中jvm逃逸问题的相关内容,有兴趣的朋友可以根据小编一起学习下。
    2018-02-02
  • Java如何批量执行datax脚本

    Java如何批量执行datax脚本

    这篇文章主要介绍了Java如何批量执行datax脚本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • mybatis打印SQL,并显示参数的实例

    mybatis打印SQL,并显示参数的实例

    这篇文章主要介绍了mybatis打印SQL,并显示参数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • java字符串转JSON简单代码示例

    java字符串转JSON简单代码示例

    这篇文章主要给大家介绍了关于java字符串转JSON的相关资料,JSON 是一种轻量级的数据交换格式,常用于Web应用程序中的数据传输,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • SpringBoot最简洁的国际化配置

    SpringBoot最简洁的国际化配置

    这篇文章主要介绍了SpringBoot最简洁的国际化配置,Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架,国际化是一个重要的功能,它允许应用程序根据用户的语言和地区显示不同的内容,在Spring Boot中,实现国际化非常简单,需要的朋友可以参考下
    2023-10-10
  • Spring Boot项目中遇到`if-else`语句七种具体使用方法解析

    Spring Boot项目中遇到`if-else`语句七种具体使用方法解析

    当在Spring Boot项目中遇到大量if-else语句时,优化这些代码变得尤为重要,因为它们不仅增加了维护难度,还可能影响应用程序的可读性和性能,以下是七种具体的方法,用于在Spring Boot项目中优化和重构if-else语句,感兴趣的朋友一起看看吧
    2024-07-07

最新评论