NetworkInterfaceの使用


回転元:http://zyslovely.iteye.com/blog/838512
1. java.net.NetworkInterfaceクラスの使用1.3.java.net.NetworkInterfaceの方法.NetworkInterfaceは、jdk 1である多くのネットワークインタフェース情報を取得する方法を定義する.6バージョン以降に加入しました.主に以下の方法があります.String displayName()は、ネットワークインタフェースの表示名byte[]getHardwareAddress()を取得し、ネットワークインタフェースの物理アドレスを取得します.通常、MACアドレスint getMTU()がこのインタフェースを返す最大転送ユニット(Maximum Transmission Unit,MTU)String getName()は、このネットワークインタフェースの名前boolean isLoopback()を取得し、ネットワークインタフェースが返信インタフェースboolean isPointToPoint()ネットワークインタフェースがポイントインタフェースboolean isUp()であるかどうかを返すネットワークインタフェースがboolean isVirtual()を開いて実行しているかどうかを返します.このインタフェースが仮想インタフェース(サブインタフェースとも呼ばれます)であるかどうかを返します.次の例では、ローカルネットワークインタフェースを取得し、その情報を表示する方法を示します.
Javaコード
 
收藏代码
  • package org.dakiler.javanet.chapter1;   
  •   
  • import java.net.NetworkInterface;   
  •   
  • import java.util.Enumeration;   
  •   
  • public class Example6   
  •   
  • {   
  •   
  •     public static void main(String args[])throws Exception   
  •   
  •      {   
  •   
  •          Enumeratione=NetworkInterface.getNetworkInterfaces();   
  •   
  •         while(e.hasMoreElements())   
  •   
  •          {   
  •   
  •              NetworkInterface ni=e.nextElement();   
  •   
  •              System.out.println("displayname: "+ni.getDisplayName());   
  •   
  •              System.out.println("name: "+ni.getName());   
  •   
  •              System.out.println("MTU: "+ni.getMTU());   
  •   
  •              System.out.println("Loopback: "+ni.isLoopback());   
  •   
  •              System.out.println("Virtual: "+ni.isVirtual());   
  •   
  •              System.out.println("Up: "+ni.isUp());   
  •   
  •              System.out.println("PointToPoint: "+ni.isPointToPoint());   
  •   
  •             byte[]mac=ni.getHardwareAddress();   
  •   
  •             if(mac!=null)   
  •   
  •             displayMac(mac);   
  •   
  •             else System.out.println("mac is null");   
  •   
  •              System.out.println("-----");   
  •   
  •          }   
  •   
  •      }   
  •   
  •        
  •   
  •     public static void displayMac(byte[] mac)   
  •   
  •      {   
  •   
  •         for(int i=0;i
  •   
  •          {   
  •   
  •             byte b=mac[i];   
  •   
  •             int intValue=0;   
  •   
  •             if(b>=0)intValue=b;   
  •   
  •             else intValue=256+b;   
  •   
  •              System.out.print(Integer.toHexString(intValue));   
  •   
  •             if(i!=mac.length-1)   
  •   
  •              System.out.print("-");   
  •   
  •          }   
  •   
  •          System.out.println();   
  •   
  •      }      
  •   
  • }  
  • package org.dakiler.javanet.chapter1;
    
    
    
    import java.net.NetworkInterface;
    
    
    
    import java.util.Enumeration;
    
    
    
    public class Example6
    
    
    
    {
    
    
    
        public static void main(String args[])throws Exception
    
    
    
         {
    
    
    
             Enumeration<NetworkInterface>e=NetworkInterface.getNetworkInterfaces();
    
    
    
            while(e.hasMoreElements())
    
    
    
             {
    
    
    
                 NetworkInterface ni=e.nextElement();
    
    
    
                 System.out.println("displayname: "+ni.getDisplayName());
    
    
    
                 System.out.println("name: "+ni.getName());
    
    
    
                 System.out.println("MTU: "+ni.getMTU());
    
    
    
                 System.out.println("Loopback: "+ni.isLoopback());
    
    
    
                 System.out.println("Virtual: "+ni.isVirtual());
    
    
    
                 System.out.println("Up: "+ni.isUp());
    
    
    
                 System.out.println("PointToPoint: "+ni.isPointToPoint());
    
    
    
                byte[]mac=ni.getHardwareAddress();
    
    
    
                if(mac!=null)
    
    
    
                displayMac(mac);
    
    
    
                else System.out.println("mac is null");
    
    
    
                 System.out.println("-----");
    
    
    
             }
    
    
    
         }
    
    
    
        
    
    
    
        public static void displayMac(byte[] mac)
    
    
    
         {
    
    
    
            for(int i=0;i<mac.length;i++)
    
    
    
             {
    
    
    
                byte b=mac[i];
    
    
    
                int intValue=0;
    
    
    
                if(b>=0)intValue=b;
    
    
    
                else intValue=256+b;
    
    
    
                 System.out.print(Integer.toHexString(intValue));
    
    
    
                if(i!=mac.length-1)
    
    
    
                 System.out.print("-");
    
    
    
             }
    
    
    
             System.out.println();
    
    
    
         }   
    
    
    
    }
    
    

    1.4. その他java.net.NetworkInterfaceは、apiがネットワークインタフェースにアクセスするための情報を提供するが、いずれも基本情報を取得するだけであり、データリンク層の制御に対するapiは提供する.またjava標準バージョンでは、ネットワーク層以下の制御は提供されておらず、サードパーティのAPIを使用する必要があります.有名なのはJPCAPです.JPCAPはwincap/libpcapを呼び出し、JAVA言語に共通のインタフェースを提供し、プラットフォームの無関係性を実現した.このAPIは、データリンク層で受信パケットを送信する機能を提供する.詳細については、JPCAPのテクニカルドキュメントを参照してください.