Holen Sie sich die mac-Adresse in Java getHardwareAddress nicht-deterministisch

Ich hatte ein problem, um die mac-Adresse einer Maschine, die wurde gelöst in diese Frage mit den Folgen code:

Process p = Runtime.getRuntime().exec("getmac /fo csv /nh"); 
java.io.BufferedReader in = new java.io.BufferedReader(new  java.io.InputStreamReader(p.getInputStream())); 
String line; 
line = in.readLine();         
String[] result = line.split(","); 

System.out.println(result[0].replace('"', ' ').trim()); 

Allerdings würde ich gerne wissen, warum dieser code nicht funktioniert. Jedes mal, wenn er liest die MAC Adresse einen anderen Wert zurückgibt. Zuerst dachte ich, es war, weil getHash, vielleicht mit einer timestamp-ich weiß nicht... Aber auch das entfernen, das Ergebnis ändert.

Code

    public static byte[] getMacAddress() {
        try {
            Enumeration<NetworkInterface> nwInterface = NetworkInterface.getNetworkInterfaces();
            while (nwInterface.hasMoreElements()) {
                NetworkInterface nis = nwInterface.nextElement();
                if (nis != null) {
                    byte[] mac = nis.getHardwareAddress();
                    if (mac != null) {
                        /*
                         * Extract each array of mac address and generate a
                         * hashCode for it
                         */
                        return mac;//.hashCode();
                    } else {
                        Logger.getLogger(Utils.class.getName()).log(Level.WARNING, "Address doesn't exist or is not accessible");
                    }
                } else {
                    Logger.getLogger(Utils.class.getName()).log(Level.WARNING, "Network Interface for the specified address is not found.");
                }
                return null;
            }
        } catch (SocketException ex) {
            Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}

Ausgabe Beispiel (ich bin drucken direkt vom byte-array, aber seine genug, um zu sehen, die anderen denke ich)

[B@91cee
[B@95c083
[B@99681b
[B@a61164
[B@af8358
[B@b61fd1
[B@bb7465
[B@bfc8e0
[B@c2ff5
[B@c8f6f8
[B@d251a3
[B@d6c16c
[B@e2dae9
[B@ef5502
[B@f7f540
[B@f99ff5
[B@fec107

Vielen Dank im Voraus

  • Sie drucken die Standard - toString von einem byte-array.
InformationsquelleAutor Pedro Dusso | 2012-06-09
Schreibe einen Kommentar