java.net

接口
异常
java.lang.Object
  继承者 java.net.NetworkInterface

public final class NetworkInterface
     
extends Object

此类表示一个由名称和分配给此接口的 IP 地址列表组成的网络接口。它用于标识加入多播组的本地接口。 接口通常是按名称(如 "le0")区分的。

从以下版本开始:
1.4

方法摘要
 boolean equals(Object obj)
          将此对象与指定对象比较。
static NetworkInterface getByInetAddress(InetAddress addr)
          一个便捷方法,搜索绑定了指定 Internet 协议 (IP) 地址的网络接口。
static NetworkInterface getByName(String name)
          搜索具有指定名称的网络接口。
 String getDisplayName()
          获取此网络接口的显示名称。
 byte[] getHardwareAddress()
          如果存在硬件地址并可以使用给定的当前权限访问,则返回该硬件地址(通常是 MAC)。
 Enumeration<InetAddress> getInetAddresses()
          一个便捷方法,返回一个具有绑定到此网络接口全部或部分 InetAddress 的 Enumeration。
 List<InterfaceAddress> getInterfaceAddresses()
          获取此网络接口的全部或部分 InterfaceAddresses 所组成的列表。
 int getMTU()
          返回此接口的最大传输单元(Maximum Transmission Unit,MTU)。
 String getName()
          获取此网络接口的名称。
static Enumeration<NetworkInterface> getNetworkInterfaces()
          返回此机器上的所有接口。
 NetworkInterface getParent()
          如果此接口是子接口,则返回它的父 NetworkInterface;如果它是物理(非虚拟)接口或没有父接口,则返回 null
 Enumeration<NetworkInterface> getSubInterfaces()
          获取具有连接到此网络接口的所有子接口(也称虚拟接口)的 Enumeration。
 int hashCode()
          返回该对象的哈希码值。
 boolean isLoopback()
          返回网络接口是否是回送接口。
 boolean isPointToPoint()
          返回网络接口是否是点对点接口。
 boolean isUp()
          返回网络接口是否已经开启并运行。
 boolean isVirtual()
          返回此接口是否是虚拟接口(也称为子接口)。
 boolean supportsMulticast()
          返回网络接口是否支持多址广播。
 String toString()
          返回该对象的字符串表示。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法详细信息

getName

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

返回:
此网络接口的名称

getInetAddresses

public Enumeration<InetAddress> getInetAddresses()
一个便捷方法,返回一个具有绑定到此网络接口全部或部分 InetAddress 的 Enumeration。

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

返回:
一个 Enumeration 对象,具有绑定到此网络接口的全部或部分 InetAddress

getInterfaceAddresses

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

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

返回:
一个 List 对象,具有此网络接口的全部或部分 InterfaceAddresss
从以下版本开始:
1.6

getSubInterfaces

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

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

返回:
一个 Enumeration 对象,具有此网络接口的所有子接口。
从以下版本开始:
1.6

getParent

public NetworkInterface getParent()
如果此接口是子接口,则返回它的父 NetworkInterface;如果它是物理(非虚拟)接口或没有父接口,则返回 null

返回:
此接口连接到的 NetworkInterface
从以下版本开始:
1.6

getDisplayName

public String getDisplayName()
获取此网络接口的显示名称。显示名称是描述网络设备的可读字符串。

返回:
此网络接口的显示名称;如果不存在可用的显示名称,则返回 null。

getByName

public static NetworkInterface getByName(String name)
                                  throws SocketException
搜索具有指定名称的网络接口。

参数:
name - 网络接口的名称。
返回:
具有指定名称的 NetworkInterface;如果不存在具有指定名称的网络接口,则返回 null
抛出:
SocketException - 如果发生 I/O 错误。
NullPointerException - 如果指定的名称为 null

getByInetAddress

public static NetworkInterface getByInetAddress(InetAddress addr)
                                         throws SocketException
一个便捷方法,搜索绑定了指定 Internet 协议 (IP) 地址的网络接口。

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

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

getNetworkInterfaces

public static Enumeration<NetworkInterface> getNetworkInterfaces()
                                                          throws SocketException
返回此机器上的所有接口。如果在此机器上找不到任何网络接口,则返回 null。 注:可以使用 getNetworkInterfaces()+getInetAddresses() 来获取此节点的所有 IP 地址。

返回:
此机器上的 NetworkInterface 的 Enumeration
抛出:
SocketException - 如果发生 I/O 错误。

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)。

返回:
包含硬件地址的 byte 数组;如果地址不存在或不可访问,则返回 null
抛出:
SocketException - 如果发生 I/O 错误。
从以下版本开始:
1.6

getMTU

public int getMTU()
           throws SocketException
返回此接口的最大传输单元(Maximum Transmission Unit,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。

覆盖:
Object 中的 equals
参数:
obj - 要与之比较的对象。
返回:
如果对象相同,则返回 true;否则,返回 false
另请参见:
InetAddress.getAddress()

hashCode

public int hashCode()
从类 Object 复制的描述
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

hashCode 的常规协定是:

  • 在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
  • 如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
  • 如果根据 Object.equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
从类 Object 复制的描述
返回该对象的字符串表示。通常, toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())
 

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。