Module java.base
Package java.net

Class NetworkInterface

java.lang.Object
java.net.NetworkInterface

public final class NetworkInterface extends Object
这个类表示由名称和分配给此接口的IP地址列表组成的网络接口。它用于标识加入多播组的本地接口。接口通常以诸如"le0"之类的名称而闻名。
自:
1.4
  • Method Details

    • getName

      public String getName()
      获取此网络接口的名称。
      返回:
      此网络接口的名称
    • getInetAddresses

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

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

      返回:
      一个带有绑定到此网络接口的所有或部分InetAddresses的枚举对象
      另请参见:
    • inetAddresses

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

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

      返回:
      一个带有绑定到此网络接口的所有或部分InetAddresses的流对象
      自:
      9
    • getInterfaceAddresses

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

      如果存在安全管理器,则将为每个InterfaceAddress的InetAddress调用其checkConnect方法。只有checkConnect不会抛出SecurityException的InterfaceAddresses才会在列表中返回。

      返回:
      一个带有此网络接口的所有或部分InterfaceAddress的List对象
      自:
      1.6
    • getSubInterfaces

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

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

      返回:
      一个带有此网络接口的所有子接口的枚举对象
      自:
      1.6
      另请参见:
    • subInterfaces

      public Stream<NetworkInterface> subInterfaces()
      获取附加到此网络接口的所有子接口(也称为虚拟接口)的流。
      返回:
      一个带有此网络接口的所有子接口的流对象
      自:
      9
    • getParent

      public NetworkInterface getParent()
      如果这是一个子接口,则返回此接口的父NetworkInterface;如果这是一个物理(非虚拟)接口或没有父接口,则返回null。
      返回:
      此接口附加到的NetworkInterface
      自:
      1.6
    • getIndex

      public int getIndex()
      返回此网络接口的索引。索引是大于或等于零的整数,或对于未知的情况为-1。这是一个特定于系统的值,具有相同名称的接口在不同计算机上可能具有不同的索引。
      返回:
      此网络接口的索引,如果索引未知则为-1
      自:
      1.7
      另请参见:
    • getDisplayName

      public String getDisplayName()
      获取此网络接口的显示名称。显示名称是描述网络设备的人类可读字符串。
      返回:
      表示此网络接口的显示名称的非空字符串,如果没有可用的显示名称则为null。
    • 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
      另请参见:
    • getByInetAddress

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

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

      参数:
      addr - 要搜索的InetAddress
      返回:
      具有指定IP地址的NetworkInterface,如果没有具有指定IP地址的网络接口则返回null
      抛出:
      SocketException - 如果发生I/O错误。
      NullPointerException - 如果指定的地址为null
    • getNetworkInterfaces

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

      public static Stream<NetworkInterface> networkInterfaces() throws SocketException
      返回此计算机上所有接口的Stream。该Stream包含至少一个接口,可能代表仅支持此计算机上实体之间通信的环回接口。
      API注释:
      此方法可与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版本起:
      1.6
    • isLoopback

      public boolean isLoopback() throws SocketException
      返回网络接口是否为环回接口。
      返回:
      true 如果接口是环回接口。
      抛出:
      SocketException - 如果发生I/O错误。
      自1.6版本起:
      1.6
    • isPointToPoint

      public boolean isPointToPoint() throws SocketException
      返回网络接口是否为点对点接口。典型的点对点接口可能是通过调制解调器的PPP连接。
      返回:
      true 如果接口是点对点接口。
      抛出:
      SocketException - 如果发生I/O错误。
      自1.6版本起:
      1.6
    • supportsMulticast

      public boolean supportsMulticast() throws SocketException
      返回网络接口是否支持多播。
      返回:
      true 如果接口支持多播。
      抛出:
      SocketException - 如果发生I/O错误。
      自1.6版本起:
      1.6
    • getHardwareAddress

      public byte[] getHardwareAddress() throws SocketException
      返回接口的硬件地址(通常是MAC地址),如果有并且在当前权限下可以访问。如果设置了安全管理器,则调用者必须具有权限NetPermission("getNetworkInformation")。
      返回:
      包含地址的字节数组,如果地址不存在、不可访问或设置了安全管理器且调用者没有权限NetPermission("getNetworkInformation"),则返回null
      抛出:
      SocketException - 如果发生I/O错误。
      自1.6版本起:
      1.6
    • getMTU

      public int getMTU() throws SocketException
      返回此接口的最大传输单元(MTU)。
      返回:
      该接口的MTU值。
      抛出:
      SocketException - 如果发生I/O错误。
      自1.6版本起:
      1.6
    • isVirtual

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

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

      如果两个NetworkInterface实例的名称和绑定到接口的InetAddress集相等,则表示两个NetworkInterface相同。

      覆盖:
      equals 在类 Object
      API注释:
      如果底层接口的地址由系统动态更新,则引用同一底层接口的两个NetworkInterface对象可能不相等。
      参数:
      obj - 要比较的对象。
      返回:
      如果对象相同,则返回true; 否则返回false
      参见: