2010-12-14 20 views
1
public static void main(String[] args) { 
    try { 
     InetAddress address = InetAddress.getLocalHost(); 
     // InetAddress address = InetAddress.getByName("192.168.46.53"); 

     /* 
     * Get NetworkInterface for the current host and then read the 
     * hardware address. 
     */ 
     NetworkInterface ni = NetworkInterface.getByInetAddress(address); 
     if (ni != null) { 
      byte[] mac = ni.getHardwareAddress(); 
      if (mac != null) { 
       /* 
       * Extract each array of mac address and convert it to hexa with the 
       * following format 08-00-27-DC-4A-9E. 
       */ 
       for (int i = 0; i < mac.length; i++) { 
        System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""); 
       } 
      } else { 
       System.out.println("Address doesn't exist or is not accessible."); 
      } 
     } else { 
      System.out.println("Network Interface for the specified address is not found."); 
     } 

リモートホストのMACアドレスを見つけるのに問題がありますが、自分のローカルホストのMACアドレスを見つけることができます。私が他のシステムのIPアドレスを持っていれば、そのシステムのMACアドレスを取得できますか?JavaでIPアドレスを使用してMacアドレスを検索する

InetAddressアドレス= InetAddress.getByName( "192.168.46.53");

私のワークグループ内のシステムのIPアドレスを指定すると... niの値はnullになります....そしてそれを取得することはできません....しかし、私のシステムの私のIPアドレスを与える...それは...フェッチする???

おかげで、
サニー

+4

なぜあなたは、リモートホストのMacアドレス(ローカルのサブネットにはありません)を取得できる必要があると思いますか?これは、IPプロトコルによって要求される(または伝達される)ものではありません。あなたが得ることができる最高のものはあなたのゲートウェイのMacアドレスです。 –

+0

netAddressアドレス= InetAddress.getByName( "192.168.46.53"); 私のワークグループ内のシステムのIPアドレスを指定すると... niの値はヌルになります....それを取得することはできません....しかし、私のシステムの私のIPアドレスを与える...それはフェッチする? ?? – sunny

答えて

7

あなただけの、お使いのコンピュータと同じサブネットにあるホストで、ローカルLAN、上のリモートホストのMACアドレスを取得することができるようになります。 1ホップ以上離れたホスト(IPホップ、イーサネットホップではない)のMACアドレスは特定できません。

ローカルLAN上のホストの対応するMACアドレスを取得するには、ARPテーブルを取得するため、または未加工パケットを送受信するために必要なアクセス許可が必要です。ほとんどのOSは特別な権限なしでARPテーブルを読み取ることができますが、使用するメカニズムはOSによって異なります。特定のOSのテクニックが必要な場合は、質問を更新してその情報を含める必要があります。

関連する問題