2012-12-27 52 views
4

可能重複:
Query ARP cache to get MAC ID如何獲得遠程機器的MAC地址的Java

我需要連接到我的家庭網絡的所有遠程計算機的MAC地址。我可以閱讀我自己的機器的MAC地址使用下面的代碼,但我不知道如何獲得我的網絡上的其他機器的MAC地址。或者是否有可能。

import java.net.InetAddress; 
import java.net.NetworkInterface; 
class Test { 
public static void main(String[] args) throws Exception { 
InetAddress address = InetAddress.getLocalHost(); 

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

for (int i = 0; i < mac.length; i++) { 
    System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""); 
} 
} 
} 

輸出(我的電腦的6byte MAC地址)
30-60-77-12-CD-99

+0

爲了什麼目的?除了顯示它之外,您可以使用Java中的MAC地址做任何有用的事情。 – EJP

回答

1

如何獲得遠程機器的MAC地址

你不能這樣做 - 不在一般情況下。 MAC addresses僅適用於同一物理網段的機器。這些機器使用ARP協議直接相互通信,以將IP地址「轉換」爲物理(MAC)地址。

只要IP路由器或任何其他Layer-3設備越過,通常會丟失任何MAC信息。底線:無法通過互聯網獲取遠程節點的MAC地址 - 甚至在任何中等規模的專用網絡中都無法做到這一點,例如,大多數大中型公司。

+0

這也是爲什麼LAN喚醒數據包需要來自同一物理網段中的一臺機器的原因。 –