Module  java.base
软件包  java.net

Class NetworkInterface



  • public final class NetworkInterface
    extends Object
    此类表示由名称组成的网络接口和分配给此接口的IP地址列表。 用于标识组播组所在的本地接口。 接口通常由诸如“le0”的名称所知。
    从以下版本开始:
    1.4
    • 方法详细信息

      • getName

        public String getName​()
        获取此网络接口的名称。
        结果
        这个网络接口的名称
      • getInetAddresses

        public Enumeration<InetAddress> getInetAddresses​()
        获取绑定到此网络接口的所有或一部分InetAddress的枚举。

        如果有安全管理器,则为每个InetAddress调用其checkConnect方法。 枚举中只会返回checkConnect不抛出SecurityException的InetAddress。 但是,如果调用者具有NetPermission (“getNetworkInformation”)权限,则返回所有InetAddresses。

        结果
        一个Enumeration对象,其中包含绑定到此网络接口的InetAddresses的全部或一部分子集
        另请参见:
        inetAddresses()
      • inetAddresses

        public Stream<InetAddress> inetAddresses​()
        获取绑定到此网络接口的InetAddresses的全部或一部分子流。

        如果有安全管理器,则为每个InetAddress调用其checkConnect方法。 只有在checkConnect不会引发SecurityException的InetAddress将在Stream中返回。 但是,如果调用者具有NetPermission (“getNetworkInformation”)权限,则返回所有InetAddresses。

        结果
        一个Stream对象,其全部或一部分InetAddresses绑定到此网络接口
        从以下版本开始:
        9
      • getInterfaceAddresses

        public List<InterfaceAddress> getInterfaceAddresses​()
        获取此网络接口的InterfaceAddresses的全部或部分的列表。

        如果有一个安全管理器,它的checkConnect方法将使用每个InterfaceAddress的InetAddress进行调用。 只有checkConnect不会引发SecurityException的InterfaceAddress才会在列表中返回。

        结果
        一个 List对象,具有此网络接口的所有或一部分InterfaceAddresss
        从以下版本开始:
        1.6
      • getSubInterfaces

        public Enumeration<NetworkInterface> getSubInterfaces​()
        获取连接到此网络接口的所有子接口(也称为虚拟接口)的枚举。

        例如eth0:1将是eth0的子接口。

        结果
        一个具有该网络接口的所有子接口的枚举对象
        从以下版本开始:
        1.6
        另请参见:
        subInterfaces()
      • subInterfaces

        public Stream<NetworkInterface> subInterfaces​()
        获取附加到此网络接口的所有子接口(也称为虚拟接口)的流。
        结果
        一个Stream对象与该网络接口的所有子接口
        从以下版本开始:
        9
      • getParent

        public NetworkInterface getParent​()
        如果这是一个子接口,则返回此接口的父网络接口,如果它是物理(非虚拟)接口或没有父接口,则返回 null
        结果
        这个接口是 NetworkInterface
        从以下版本开始:
        1.6
      • getIndex

        public int getIndex​()
        返回此网络接口的索引。 索引为大于或等于零的整数,或-1-1 这是一个系统特定的值,具有相同名称的接口可以在不同的机器上具有不同的索引。
        结果
        该网络接口的索引或 -1如果索引未知
        从以下版本开始:
        1.7
        另请参见:
        getByIndex(int)
      • getDisplayName

        public String getDisplayName​()
        获取此网络接口的显示名称。 显示名称是描述网络设备的人类可读字符串。
        结果
        表示此网络接口的显示名称的非空字符串,如果没有显示名称可用,则为空。
      • getByName

        public static NetworkInterface getByName​(String name)
                                          throws SocketException
        搜索具有指定名称的网络接口。
        参数
        name - 网络接口的名称。
        结果
        NetworkInterface具有指定名称,或 null如果不存在具有指定名称的网络接口。
        异常
        SocketException - 如果发生I / O错误。
        NullPointerException - 如果指定的名称为 null
      • getByIndex

        public static NetworkInterface getByIndex​(int index)
                                           throws SocketException
        获取一个网络接口给它的索引。
        参数
        index - 一个整数,接口的索引
        结果
        NetworkInterface从其索引中获取,或者如果没有接口,则系统上有这样一个索引的 null
        异常
        SocketException - 如果发生I / O错误。
        IllegalArgumentException - 如果索引具有负值
        从以下版本开始:
        1.7
        另请参见:
        getIndex()
      • getByInetAddress

        public static NetworkInterface getByInetAddress​(InetAddress addr)
                                                 throws SocketException
        搜索具有绑定到指定的Internet协议(IP)地址的网络接口的便利方法。

        如果指定的IP地址绑定到多个网络接口,则不会定义哪个网络接口返回。

        参数
        addr - 要搜索的 InetAddress
        结果
        A NetworkInterfacenull如果没有指定IP地址的网络接口。
        异常
        SocketException - 如果发生I / O错误。
        NullPointerException - 如果指定的地址是 null
      • getNetworkInterfaces

        public static Enumeration<NetworkInterface> getNetworkInterfaces​()
                                                                  throws SocketException
        返回此机器上所有接口的Enumeration Enumeration包含至少一个元素,可能表示仅支持本机器上的实体之间的通信的回送接口。
        API Note:
        该方法可以与 getInetAddresses()组合使用,以获取此节点的所有IP地址
        结果
        在本机上找到的NetworkInterfaces枚举
        异常
        SocketException - 如果发生I / O错误,或者平台至少没有一个配置的网络接口。
        另请参见:
        networkInterfaces()
      • networkInterfaces

        public static Stream<NetworkInterface> networkInterfaces​()
                                                          throws SocketException
        返回此机器上所有接口的Stream Stream包含至少一个接口,可能表示仅支持本机器上的实体之间的通信的环回接口。
        API Note:
        该方法可以与inetAddresses()一起使用,以获得该节点的所有IP地址流,例如:
           Stream<InetAddress> addrs = NetworkInterface.networkInterfaces() .flatMap(NetworkInterface::inetAddresses);  
        结果
        在本机上发现的一个NetworkInterfaces流
        异常
        SocketException - 如果发生I / O错误,或者平台至少没有一个配置的网络接口。
        从以下版本开始:
        9
      • isUp

        public boolean isUp​()
                     throws SocketException
        返回网络接口是否启动并运行。
        结果
        true如果接口已启动并运行。
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • isLoopback

        public boolean isLoopback​()
                           throws SocketException
        返回网络接口是否是环回接口。
        结果
        true如果接口是环回接口。
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • isPointToPoint

        public boolean isPointToPoint​()
                               throws SocketException
        返回网络接口是否是点对点接口。 典型的点对点接口是通过调制解调器的PPP连接。
        结果
        true如果接口是点对点接口。
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • supportsMulticast

        public boolean supportsMulticast​()
                                  throws SocketException
        返回网络接口是否支持多播。
        结果
        true如果接口支持多播。
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • getHardwareAddress

        public byte[] getHardwareAddress​()
                                  throws SocketException
        返回接口的硬件地址(通常是MAC),如果它有一个,如果可以访问给定当前权限。 如果设置了安全管理员,则呼叫者必须具有权限NetPermission (“getNetworkInformation”)。
        结果
        一个包含地址的字节数组,如果地址不存在,则为 null ,不可访问或设置安全管理器,并且调用者没有权限NetPermission(“getNetworkInformation”)
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • getMTU

        public int getMTU​()
                   throws SocketException
        返回此接口的最大传输单元(MTU)。
        结果
        该接口的MTU值。
        异常
        SocketException - 如果发生I / O错误。
        从以下版本开始:
        1.6
      • isVirtual

        public boolean isVirtual​()
        返回此接口是否为虚拟接口(也称为子接口)。 在一些系统上,虚拟接口是作为物理接口的子节点创建的接口,并给出不同的设置(如地址或MTU)。 通常,接口的名称将是父类的名称,后跟冒号(:)和标识子级的数字,因为可以有多个虚拟接口连接到单个物理接口。
        结果
        true如果这个接口是一个虚拟接口。
        从以下版本开始:
        1.6
      • equals

        public boolean equals​(Object obj)
        将此对象与指定对象进行比较。 当且仅当参数不是null并且它表示与此对象相同的NetworkInterface时,结果为true

        NetworkInterface两个实例表示相同的NetworkInterface,如果两个名称和addrs都相同。

        重写:
        equalsObject
        参数
        obj - 要比较的对象。
        结果
        true如果对象是一样的; 否则为false
        另请参见:
        InetAddress.getAddress()
      • hashCode

        public int hashCode​()
        描述从类别复制: Object
        返回对象的哈希码值。 支持这种方法有利于哈希表,如HashMap提供的那样

        hashCode的总合同是:

        • 无论何时在执行Java应用程序时多次在同一个对象上调用该对象,则hashCode方法必须始终返回相同的整数,前提是修改了对象中equals比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
        • 如果根据equals(Object)方法两个对象相等,则在两个对象中的每个对象上调用hashCode方法必须产生相同的整数结果。
        • 要求如果两个对象根据Object.equals(java.lang.Object)方法不相等,则在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。

        尽可能多的合理实用,由类Object定义的hashCode方法确实为不同对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)

        重写:
        hashCodeObject
        结果
        该对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • toString

        public String toString​()
        描述从类别复制: Object
        返回对象的字符串表示形式。 一般来说, toString方法返回一个字符串,“文本地表示”此对象。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

        toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        重写:
        toStringObject
        结果
        a string representation of the object.