java.net.InetAddress 获取系统 MAC 地址 与 IP 地址

目录

MAC 获取

本机 IP 获取


1、每台联网设备的 MAC 地址是唯一的,且固定不变,所以很多时候都会有获取 AMC 地址的需求

2、MAC 地址是网卡的唯一标识,全世界任意两台电脑 MAC 地址理论上都是不同的。

3、有时候写后台程序,或者 GUI 程序时,需要直接获取程序运行的所在电脑的 ip 地址

MAC 获取

获取代码

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
 * Created by Administrator on 2018/6/26 0026.
 * 系统工具类
 */
public class SystemUtils {
    /**
     * 获取本机MAC地址
     *
     * @return
     */
    public static final String getLocalMac() {
        String localMac = null;
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            /**
             * 获取电脑网卡的AMC地址
             * 返回包含硬件地址的 byte 数组;如果地址不存在或不可访问,则返回 null
             * 如果电脑因为网卡被禁用,则这里获取会返回 null
             */
            byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();
            if (mac == null) {
                LogWmxUtils.writeLine("获取网卡 MAC 地址失败,网卡可能被禁用...");
                return null;
            }
            StringBuffer stringBuffer = new StringBuffer("");
            for (int i = 0; i < mac.length; i++) {
                if (i != 0) {
                    stringBuffer.append("-");
                }
                /**
                 * 转换mac的字节数组
                 */
                int temp = mac[i] & 0xff;
                String str = Integer.toHexString(temp);
                if (str.length() == 1) {
                    stringBuffer.append("0" + str);
                } else {
                    stringBuffer.append(str);
                }
            }
            localMac = stringBuffer.toString().toUpperCase();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return localMac;
    }
}

测试输出

----------输出结果如下--------------

本机MAC地址:1C-B7-2C-EF-BA-3D

Process finished with exit code 0

----------获取的值是没有问题的

java.net.InetAddress 获取系统 MAC 地址 与 IP 地址_第1张图片

本机 IP 获取

获取代码

import java.io.IOException;
import java.net.InetAddress;
/**
 * Created by Administrator on 2018/7/10 0010.
 */
public class Test {

    public static void main(String[] args) throws IOException {
        InetAddress inetAddress = InetAddress.getLocalHost();
        //获取本机ip
        String ip = inetAddress.getHostAddress().toString();
        //获取本机计算机名称
        String hostName = inetAddress.getHostName().toString();
        System.out.println("IP地址:" + ip);
        System.out.println("主机名:" + hostName);
    }
}

结果输出

 

你可能感兴趣的:(Java_SE)