如何利用FR获取电脑端Mac地址

如何利用FR获取电脑端Mac地址

FineReport 金色年华 发布于 2022-7-4 18:46
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
lbstjwLv7初级互助
发布于2022-7-5 08:15

我是互联网的搬运工

第一种方法:通过InetAddress对象获取

package com.chunni.mac;

import org.junit.jupiter.api.Test;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.net.UnknownHostException;

public class MACTest {

    @Test

    public void test01 () throws UnknownHostException, SocketException {

        // 获取特定的mac地址

        InetAddress address = InetAddress.getByName("xxx");

        byte[] mac = NetworkInterface.getByInetAddress(address).getHardwareAddress();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < mac.length; i++) {

            // 转为16进制

            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));

        }

        System.out.println(sb.toString());

    }

    

    @Test

    public void test02 () throws UnknownHostException, SocketException {

        InetAddress[] addresses = InetAddress.getAllByName("xxx");

        StringBuilder sb = new StringBuilder();

        for (InetAddress address : addresses) {

            byte[] mac = NetworkInterface.getByInetAddress(address).getHardwareAddress();

            for (int i = 0; i < mac.length; i++) {

                // 转为16进制

                sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "\n"));

            }

        }

        System.out.println(sb.toString());

    }

}

第二种方法:

通过NetworkInterface对象获取

package com.chunni.mac;

import java.net.NetworkInterface;

import java.net.SocketException;

import java.util.Enumeration;

public class MACTest01 {

    public static void main(String[] args) throws SocketException {

        StringBuilder sb = new StringBuilder();

        Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();

        byte[] mac = null;

        while (allNetInterfaces.hasMoreElements()) {

            NetworkInterface netInterface = allNetInterfaces.nextElement();

            if (netInterface.isLoopback() || netInterface.isVirtual() || netInterface.isPointToPoint() || !netInterface.isUp()) {

                continue;

            } else {

                mac = netInterface.getHardwareAddress();

                if (mac != null) {

                    for (int i = 0; i < mac.length; i++) {

                        sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "\n"));

                    }

                }

            }

        }

        System.out.println(sb.toString());

    }

}

注意:第一种方式查询所有mac地址时会有重复的,因为ipv4和ipv6都会查询一份mac地址

  • 土番薯 土番薯 这个要怎么用,有使用方法吗
    2023-03-10 13:42 
最佳回答
0
用户6NWif5139660Lv6资深互助
发布于2022-7-4 18:52(编辑于 2022-7-4 18:58)

https://bbs.fanruan.com/wenda/question/84219.html

参考下这个

要是实现不了 就没办法了,建议放弃

最佳回答
0
snrtuemcLv8专家互助
发布于2022-7-5 08:00

获取MAC地址,PC端目前没好的方法,APP端倒是可以参考

[App]JS 获取手机设备信息-https://help.fanruan.com/finereport/doc-view-1928.html

image.png

  • 3关注人数
  • 722浏览人数
  • 最后回答于:2022-7-5 08:15
    请选择关闭问题的原因
    确定 取消
    返回顶部