Java获取电脑真实IP地址的示例代码

 更新时间:2020年09月28日 09:29:01   作者:H.U.C-王子  
这篇文章主要介绍了Java如何获取电脑真实IP地址,忽略虚拟机等IP地址的干扰,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
/**
 * @author yins
 * @date 2018年8月12日下午9:53:58 
 */

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
 
/**
 * 获取本地真正的IP地址,即获得有线或者无线WiFi地址。
 * 过滤虚拟机、蓝牙等地址
 * @author yins
 * @date 2018年8月12日 下午9:53:58
 */
public class GetRealLocalIP {
 
  /**
   * 获取本地真正的IP地址,即获得有线或者无线WiFi地址。
   * 过滤虚拟机、蓝牙等地址
   * @author yins
   * @date 2018年8月12日下午9:56:35
   * @return
   */
  public static String getRealIP() {
    try {
      Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface
          .getNetworkInterfaces();
      while (allNetInterfaces.hasMoreElements()) {
        NetworkInterface netInterface = (NetworkInterface) allNetInterfaces
            .nextElement();
 
        // 去除回环接口,子接口,未运行和接口
        if (netInterface.isLoopback() || netInterface.isVirtual()
            || !netInterface.isUp()) {
          continue;
        }
        
        if (!netInterface.getDisplayName().contains("Intel")
            && !netInterface.getDisplayName().contains("Realtek")) {
          continue;
        }
        Enumeration<InetAddress> addresses = netInterface
            .getInetAddresses();
        System.out.println(netInterface.getDisplayName());
        while (addresses.hasMoreElements()) {
          InetAddress ip = addresses.nextElement();
          if (ip != null) {
            // ipv4
            if (ip instanceof Inet4Address) {
              System.out.println("ipv4 = " + ip.getHostAddress());
              return ip.getHostAddress();
            }
          }
        }
        break;
      }
    } catch (SocketException e) {
      System.err.println("Error when getting host ip address"
          + e.getMessage());
    }
    return null;
  }
}

此代码中只要读取到了WiFi或者有线地址其中之一立即return。

以上就是Java获取电脑真实IP地址的示例代码的详细内容,更多关于Java获取IP地址的资料请关注脚本之家其它相关文章!

相关文章

  • 详解commons-pool2池化技术

    详解commons-pool2池化技术

    本文主要是分析commons-pool2池化技术的实现方案,希望通过本文能让读者对commons-pool2的实现原理一个更全面的了解
    2021-06-06
  • MyBatis中的JdbcType映射使用介绍

    MyBatis中的JdbcType映射使用介绍

    这篇文章主要介绍了MyBatis中的JdbcType映射使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 深入理解Maven环境搭建和介绍

    深入理解Maven环境搭建和介绍

    这篇文章主要介绍了深入理解Maven环境搭建和介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 基于Spring Mvc实现的Excel文件上传下载示例

    基于Spring Mvc实现的Excel文件上传下载示例

    本篇文章主要介绍了基于Spring Mvc实现的Excel文件上传下载示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Springboot整合quartz实现多个定时任务实例

    Springboot整合quartz实现多个定时任务实例

    这篇文章主要介绍了Springboot整合quartz实现多个定时任务代码实例,Quartz 是一款功能强大的开源任务调度框架,几乎可以集成到任何 Java 应用程序中,Quartz 可用于创建简单或复杂的任务调度,用以执行数以万计的任务,需要的朋友可以参考下
    2023-08-08
  • Springboot集成JUnit5优雅进行单元测试的示例

    Springboot集成JUnit5优雅进行单元测试的示例

    这篇文章主要介绍了Springboot集成JUnit5优雅进行单元测试的示例,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java数组操作经典例题大总结

    Java数组操作经典例题大总结

    数组是在内存中存储相同数据类型的连续的空间,声明一个数组就是在内存空间中划出一串连续的空间,下面这篇文章主要给大家介绍了关于Java数组操作经典例题的相关资料,需要的朋友可以参考下
    2022-03-03
  • java中enum的用法

    java中enum的用法

    这篇文章主要介绍了java中enum的用法,包括了枚举类型的基本定义及用法分析,对于学习Java有着一定的学习与借鉴价值,需要的朋友可以参考下
    2014-11-11
  • MVC+DAO设计模式下的设计流程详解

    MVC+DAO设计模式下的设计流程详解

    这篇文章主要介绍了MVC+DAO设计模式下的设计流程详解,分别介绍了数据库设计、设计符合java bean标准的entity类、设计访问数据库的DAO接口等内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 基于Springboot+Netty实现rpc的方法 附demo

    基于Springboot+Netty实现rpc的方法 附demo

    这篇文章主要介绍了基于Springboot+Netty实现rpc功能,在父项目中引入相关依赖结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02

最新评论