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

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

IP 工具类

源代码:

/**

*

*

* @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 allNetInterfaces = NetworkInterface.getNetworkInterfaces();

while (allNetInterfaces.hasMoreElements()) {

NetworkInterface netInterface = allNetInterfaces.nextElement();

Enumeration 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 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 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());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值