Java 获取机器 ip 、mac 地址 工具类

获取机器 ip 、mac 地址

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LocalAddressUtil {
    private static Log log = LogFactory.getLog(LocalAddressUtil.class);

    public LocalAddressUtil() {
    }

    public static String getIpAddress() {
        try {
            Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip = null;

            while(true) {
                NetworkInterface netInterface;
                do {
                    do {
                        do {
                            if (!allNetInterfaces.hasMoreElements()) {
                                return "";
                            }

                            netInterface = (NetworkInterface)allNetInterfaces.nextElement();
                        } while(netInterface.isLoopback());
                    } while(netInterface.isVirtual());
                } while(!netInterface.isUp());

                Enumeration addresses = netInterface.getInetAddresses();

                while(addresses.hasMoreElements()) {
                    ip = (InetAddress)addresses.nextElement();
                    if (ip != null && ip instanceof Inet4Address) {
                        return ip.getHostAddress();
                    }
                }
            }
        } catch (Exception var4) {
            var4.printStackTrace();
            return "";
        }
    }

    public static String getMacAddress() {
        try {
            Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
            Object var1 = null;

            StringBuilder sb;
            do {
                byte[] mac;
                do {
                    NetworkInterface netInterface;
                    do {
                        do {
                            do {
                                if (!allNetInterfaces.hasMoreElements()) {
                                    return "";
                                }

                                netInterface = (NetworkInterface)allNetInterfaces.nextElement();
                            } while(netInterface.isLoopback());
                        } while(netInterface.isVirtual());
                    } while(!netInterface.isUp());

                    mac = netInterface.getHardwareAddress();
                } while(mac == null);

                sb = new StringBuilder();

                for(int i = 0; i < mac.length; ++i) {
                    sb.append(String.format("%02X%s", mac[i], i < mac.length - 1 ? "-" : ""));
                }
            } while(sb.length() <= 0);

            return sb.toString();
        } catch (Exception var5) {
            var5.printStackTrace();
            return "";
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值