Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP

IP 工具类

源代码:

/**
* <p>
*
* @author XiaoPengwei
* @since 2019-07-20
*/
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration; public class IpUtil { public static void main(String[] args) { IpUtil testGetIP = new IpUtil(); System.out.println("Your LocalHost IP(ipv4) is:"); System.out.println(testGetIP.getIP()); System.out.println("\nHere are all your IPS:");
testGetIP.printAllIp();
} /**
* Fond LocalHost ipv4
*
* @return java.lang.String
*/
public String getIP() {
try {
// 根据 hostname 找 ip
InetAddress address = InetAddress.getLocalHost();
if (address.isLoopbackAddress()) {
Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = allNetInterfaces.nextElement();
Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress ip = addresses.nextElement();
if (!ip.isLinkLocalAddress() && !ip.isLoopbackAddress() && ip instanceof Inet4Address) {
return ip.getHostAddress();
}
}
}
}
return address.getHostAddress();
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
return null;
}
} /**
* Find all network interfaces
*/
public void printAllIp() {
try {
Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = allNetInterfaces.nextElement(); // Remove loopback interface, sub-interface, unrun and interface
if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {
continue;
} Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress ip = addresses.nextElement();
if (ip != null) { System.out.println("ip = " + ip.getHostAddress());
// ipv4
if (ip instanceof Inet4Address) {
System.out.println("ipv4 = " + ip.getHostAddress()); if (!ip.getHostAddress().startsWith("192") && !ip.getHostAddress().startsWith("10") && !ip.getHostAddress().startsWith("172")) {
// Intranet
ip.getHostAddress();
}
}
}
}
}
} catch (SocketException e) {
System.err.println("[Error] can't get host ip address" + e.getMessage());
}
}
}

Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP的更多相关文章

  1. Java工具类(获取当前主机操作系统名)

    package com.fly.jenkins.util; /** * 操作系统类: 获取System.getProperty("os.name")对应的操作系统 * * @aut ...

  2. Java工具类:获取long型唯一ID

    直接上代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 获取long型唯一ID */ public class I ...

  3. java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源

    实现该方法需要导入一些jar包 可以去一下地址下载: http://pan.baidu.com/s/1hqrJF7m /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1.通 ...

  4. 使用scanner工具类来获取用户输入的信息

    使用scanner工具类来获取用户输入的成绩信息. 步骤:1.导入java.util.Scanner包 2.创建Scanner对象 3.接受并保存用户输入的值 例子:通过用户输入来获取学生成绩 pac ...

  5. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

  6. 排名前 16 的 Java 工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  7. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  8. 干货:排名前16的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  9. 常用高效 Java 工具类总结

    一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...

随机推荐

  1. 5分钟了解OWL本体建模语言

    一.概念: 定义:一种定义和实例化web本体的语言   本体:与xml schema不同,是知识表示,而不是一种消息格式   优点:可以推理   开放世界的假设:本体信息只增加,可以存在矛盾冲突的事实 ...

  2. 【VS开发】使用CTabView分割多页卡窗口

    一般书中介绍的是使用CSplitterWnd来拆分窗口实现多视图,CSplitterWnd中的CreateClient可以保存其创建的pCreateContext指针,以便子视图共享Document. ...

  3. sass与less对比学习

    参考链接:https://blog.csdn.net/luluan_lin/article/details/83749176

  4. MySQL_数据表命令

    目录 数据表操作 1.创建数据表: 2. 修改表结构: 数据表查看 1.查看数据库中所有表的信息 2.查看表结构 3.查看创建表时所输入的命令 4.删除数据表 数据表操作 关于Mysql的数据类型,点 ...

  5. 微信JSAPI支付接口,支付完成后关闭当前窗口

    一.把demo里的这一段: success: function (res) { // 支付成功后的回调函数 if (res.err_msg == "get_brand_wcpay_reque ...

  6. ULB

    https://docs.ucloud.cn/network/ulb/intro/whatisulb 创建ulb ulb里创建vserver, 设置监听端口 配置后端转发节点(服务节点) 在服务节点上 ...

  7. 【转帖】k8s之Deployment与service

    k8s之Deployment与service 2018年08月05日 18:11:00 xiyou_pen/pen 阅读数 5894   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  8. Orchestrator

    MYSQL5.7下搭建Orchestrator 环境说明 在主机1,主机2,主机3上安装MySQL服务端和客户端. 主机1 主机2 主机3 操作系统 CentOS7.4 CentOS7.4 CentO ...

  9. Postgresql explain的analyze和buffers选项

    sql查询分析: 原文地址:https://blog.csdn.net/qq_28893679/article/details/78316283

  10. win10 Snipaste 截图软件

    安装教程:搜索 snipaste,网上可以直接下载 使用教程: 1)截图按钮:F1 2)粘贴按钮:F3