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

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)
巴扎黑

用java.net.NetworkInterface

Enumeration 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())); ... }
    给我你的怀抱

    你的这段代码在哪运行就拿到的是哪的mac地址
    如果你是web应用,除非你的客户端和你的应用服务器在同一个局域网,否则你拿不到的
    如果你是c/s应用,那就在c端获取,在报文里传给s端
    具体原因,可以看下OSI7层网络模型

      仅有的幸福

      声明本答案转载,如需删除,请告知。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!