Bagaimana untuk mendapatkan alamat mac pelanggan pengguna dalam java
PHPz
PHPz 2017-05-27 17:41:02
0
3
1178

Bagaimana untuk mendapatkan alamat MAC pelanggan pengguna dalam java Saya telah mencuba banyak kaedah untuk mendapatkan alamat MAC pelayan, dan kita juga mesti mempertimbangkan situasi di mana pengguna mempunyai berbilang kad rangkaian, akan ada berbilang alamat mac, anda perlu mendapatkan alamat mac kad rangkaian yang disambungkan ke rangkaian Sistem tidak menggunakan proksi terbalik.

PHPz
PHPz

学习是最好的投资!

membalas semua(3)
巴扎黑

Gunakan java.net.NetworkInterface

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets)) {
    System.out.printf("Name: %s\n", netint.getName());
    for (InetAddress inetAddress : Collections.list(inetAddresses)) {
        System.out.printf("InetAddress: %s\n", inetAddress);
    }
    System.out.printf("Hardware address: %s\n", Arrays.toString(netint.getHardwareAddress()));
    ...
}
给我你的怀抱

Anda akan mendapat alamat mac di mana sahaja anda menjalankan kod ini
Jika anda adalah aplikasi web, melainkan pelanggan anda dan pelayan aplikasi anda berada dalam LAN yang sama, anda tidak akan dapat mendapatkannya
Jika anda adalah aplikasi c/s, kemudian dapatkannya di sebelah c dan hantar ke sebelah s dalam mesej
Atas sebab tertentu, anda boleh melihat model rangkaian lapisan OSI7

仅有的幸福

Nyatakan bahawa jawapan ini diterbitkan semula Jika anda perlu memadamkannya, sila maklumkan kepada kami. http://blog.csdn.net/yfkiss/a...


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;

/**
 * 与系统相关的一些常用工具方法.
 * 
 * @author lvbogun
 * @version 1.0.0
 */
public class SystemTool {

    /**
     * 获取当前操作系统名称. return 操作系统名称 例如:windows xp,linux 等.
     */
    public static String getOSName() {
        return System.getProperty("os.name").toLowerCase();
    }

    /**
     * 获取unix网卡的mac地址. 非windows的系统默认调用本方法获取.
     * 如果有特殊系统请继续扩充新的取mac地址方法.
     * 
     * @return mac地址
     */
    public static String getUnixMACAddress() {
        String mac = null;
        BufferedReader bufferedReader = null;
        Process process = null;
        try {
            // linux下的命令,一般取eth0作为本地主网卡
            process = Runtime.getRuntime().exec("ifconfig eth0");
            // 显示信息中包含有mac地址信息
            bufferedReader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            String line = null;
            int index = -1;
            while ((line = bufferedReader.readLine()) != null) {
                // 寻找标示字符串[hwaddr]
                index = line.toLowerCase().indexOf("hwaddr");
                if (index >= 0) {// 找到了
                    // 取出mac地址并去除2边空格
                    mac = line.substring(index + "hwaddr".length() + 1).trim();
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            bufferedReader = null;
            process = null;
        }
        return mac;
    }

    /**
     * 获取widnows网卡的mac地址.
     * 
     * @return mac地址
     */
    public static String getWindowsMACAddress() {
        String mac = null;
        BufferedReader bufferedReader = null;
        Process process = null;
        try {
            // windows下的命令,显示信息中包含有mac地址信息
            process = Runtime.getRuntime().exec("ipconfig /all");
            bufferedReader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            String line = null;
            int index = -1;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                // 寻找标示字符串[physical
                index = line.toLowerCase().indexOf("physical address");
                
                if (index >= 0) {// 找到了
                    index = line.indexOf(":");// 寻找":"的位置
                    if (index >= 0) {
                        System.out.println(mac);
                        // 取出mac地址并去除2边空格
                        mac = line.substring(index + 1).trim();
                    }
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            bufferedReader = null;
            process = null;
        }

        return mac;
    }

    /**
     * windows 7 专用 获取MAC地址
     * 
     * @return
     * @throws Exception
     */
    public static String getMACAddress() throws Exception {
        
        // 获取本地IP对象
        InetAddress ia = InetAddress.getLocalHost();
        // 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
        byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();

        // 下面代码是把mac地址拼装成String
        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < mac.length; i++) {
            if (i != 0) {
                sb.append("-");
            }
            // mac[i] & 0xFF 是为了把byte转化为正整数
            String s = Integer.toHexString(mac[i] & 0xFF);
            sb.append(s.length() == 1 ? 0 + s : s);
        }

        // 把字符串所有小写字母改为大写成为正规的mac地址并返回
        return sb.toString().toUpperCase();
    }

    /**
     * 测试用的main方法.
     * 
     * @param argc 运行参数.
     * @throws Exception
     */
    public static void main(String[] argc) throws Exception {
        String os = getOSName();
        System.out.println(os);
        if (os.equals("windows 7")) {
            String mac = getMACAddress();
            System.out.println(mac);
        } else if (os.startsWith("windows")) {
            // 本地是windows
            String mac = getWindowsMACAddress();
            System.out.println(mac);
        } else {
            // 本地是非windows系统 一般就是unix
            String mac = getUnixMACAddress();
            System.out.println(mac);
        }
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!