2012-09-03 20 views
1

試圖使用getHardwareAddress()方法獲取我的網卡的mac地址,但根據NetworkInterface.getNetworkInterfaces()我有20多個網絡接口。我通過檢查其他屬性將它縮小到一個,但是它是否可以在所有(或者至少大多數情況下)和操作系統中工作,只能在WIndows 7 PC上使用。在Java 7中獲取正確的macaddress

如果一臺計算機有兩張網卡,我可以找出哪一個實際上用於當前的互聯網連接?

Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); 
while(e.hasMoreElements()) 
{ 
    NetworkInterface ni = e.nextElement(); 
    if(ni!=null && ni.getHardwareAddress()!=null &&ni.getInetAddresses().hasMoreElements() && ni.supportsMulticast()) 
    { 
     String macAddress = Hex.encodeHexString(ni.getHardwareAddress()); 
     System.out.println("MACADDRESSIS"+macAddress); 
    } 
} 
+2

MAC地址可以很容易地改變,我希望你不要過分依賴它來保證安全 –

+0

所有的MAC地址都可能被使用。 –

+0

@Peter Lawrey在Windows上ipconfig清楚地顯示了正確的mac地址,所以我只是問如何以純Java方式做到這一點 –

回答

0

如果你有一個InetAddress,你可以使用NetworkInterface.getByInetAddress()當前的NetworkInterface。

+0

我不知道inet地址,但也許我可以得到當前的ipaddress,然後從它獲得硬件地址? –