4

重複の可能性:
ARPキャッシュをクエリしてMACIDを取得する

ホームネットワークに接続されているすべてのリモートマシンの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) ? "-" : "");
}
}
}  

出力(MyComputerの6バイトMACアドレス)
30-60-77-12-cd-99

4

1 に答える 1

1

リモート マシンの MAC アドレスを取得する方法

それはできません-一般的な場合ではありません。MAC アドレスは、同じ物理ネットワーク セグメント内のマシンでのみ使用できます。これらのマシンは、 ARPプロトコルを使用して相互に直接通信し、IP アドレスを物理 (MAC) アドレスに「変換」します。

通常、IP ルーターまたはその他のレイヤー 3デバイスを通過するとすぐに、MAC 情報はすべて失われます。

結論: インターネット経由でリモート ノードの MAC アドレスを取得することはできません。たとえば、ほとんどの中規模から大規模の企業で実装されているような、中程度の規模のプライベート ネットワークでは取得できません。

于 2012-12-28T02:46:31.647 に答える