zoukankan      html  css  js  c++  java
  • NetworkInterface的使用

    转自:http://zyslovely.iteye.com/blog/838512

    1. java.net.NetworkInterface类的使用

    1.3. java.net.NetworkInterface的方法。

    NetworkInterface定义了很多获取网络接口信息的方法,其中很多是jdk1.6版本以后才加入进去的。主要有以下方法:

    String displayName() 获取网络接口的显示名称

    byte[] getHardwareAddress() 获取网络接口的物理地址,通常是MAC地址

    int getMTU()返回此接口的最大传输单元(Maximum Transmission Unit,MTU)

    String getName()获取此网络接口的名称

    boolean isLoopback()返回网络接口是否是回送接口

    boolean isPointToPoint()返回网络接口是否是点对点接口

    boolean isUp()返回网络接口是否已经开启并运行

    boolean isVirtual()返回此接口是否是虚拟接口(也称为子接口)。

    下面的例子展示了如何获取本地网络接口以及显示其信息。

    Java代码 复制代码 收藏代码
    1. package org.dakiler.javanet.chapter1;   
    2.   
    3. import java.net.NetworkInterface;   
    4.   
    5. import java.util.Enumeration;   
    6.   
    7. public class Example6   
    8.   
    9. {   
    10.   
    11.     public static void main(String args[])throws Exception   
    12.   
    13.      {   
    14.   
    15.          Enumeration<NetworkInterface>e=NetworkInterface.getNetworkInterfaces();   
    16.   
    17.         while(e.hasMoreElements())   
    18.   
    19.          {   
    20.   
    21.              NetworkInterface ni=e.nextElement();   
    22.   
    23.              System.out.println("displayname: "+ni.getDisplayName());   
    24.   
    25.              System.out.println("name: "+ni.getName());   
    26.   
    27.              System.out.println("MTU: "+ni.getMTU());   
    28.   
    29.              System.out.println("Loopback: "+ni.isLoopback());   
    30.   
    31.              System.out.println("Virtual: "+ni.isVirtual());   
    32.   
    33.              System.out.println("Up: "+ni.isUp());   
    34.   
    35.              System.out.println("PointToPoint: "+ni.isPointToPoint());   
    36.   
    37.             byte[]mac=ni.getHardwareAddress();   
    38.   
    39.             if(mac!=null)   
    40.   
    41.             displayMac(mac);   
    42.   
    43.             else System.out.println("mac is null");   
    44.   
    45.              System.out.println("-----");   
    46.   
    47.          }   
    48.   
    49.      }   
    50.   
    51.        
    52.   
    53.     public static void displayMac(byte[] mac)   
    54.   
    55.      {   
    56.   
    57.         for(int i=0;i<mac.length;i++)   
    58.   
    59.          {   
    60.   
    61.             byte b=mac[i];   
    62.   
    63.             int intValue=0;   
    64.   
    65.             if(b>=0)intValue=b;   
    66.   
    67.             else intValue=256+b;   
    68.   
    69.              System.out.print(Integer.toHexString(intValue));   
    70.   
    71.             if(i!=mac.length-1)   
    72.   
    73.              System.out.print("-");   
    74.   
    75.          }   
    76.   
    77.          System.out.println();   
    78.   
    79.      }      
    80.   
    81. }  
    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的相关技术文档。

  • 相关阅读:
    Json对象与Json字符串互转(4种转换方式)
    Web.config配置文件详解
    jQuery BlockUI Plugin Demo 6(Options)
    jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
    jQuery BlockUI Plugin Demo 4(Element Blocking Examples)
    jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
    jQuery BlockUI Plugin Demo 2
    <configSections> 位置引起的错误
    关于jQuery的cookies插件2.2.0版设置过期时间的说明
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/wangpei/p/2892871.html
Copyright © 2011-2022 走看看