- java.lang.Object
-
- java.net.NetworkInterface
-
public final class NetworkInterface extends Object
此类表示由名称组成的网络接口和分配给此接口的IP地址列表。 用于标识组播组所在的本地接口。 接口通常由诸如“le0”的名称所知。- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object obj)
将此对象与指定对象进行比较。static NetworkInterface
getByIndex(int index)
获取一个网络接口给它的索引。static NetworkInterface
getByInetAddress(InetAddress addr)
搜索具有绑定到指定的Internet协议(IP)地址的网络接口的便利方法。static NetworkInterface
getByName(String name)
搜索具有指定名称的网络接口。String
getDisplayName()
获取此网络接口的显示名称。byte[]
getHardwareAddress()
返回接口的硬件地址(通常是MAC),如果它有一个,如果可以访问给定当前权限。int
getIndex()
返回此网络接口的索引。Enumeration<InetAddress>
getInetAddresses()
获取绑定到此网络接口的所有或一部分InetAddress的枚举。List<InterfaceAddress>
getInterfaceAddresses()
获取此网络接口的InterfaceAddresses
的全部或部分的列表。int
getMTU()
返回此接口的最大传输单元(MTU)。String
getName()
获取此网络接口的名称。static Enumeration<NetworkInterface>
getNetworkInterfaces()
返回此机器上所有接口的Enumeration
。NetworkInterface
getParent()
如果这是一个子接口,则返回此接口的父网络接口,如果它是物理(非虚拟)接口或没有父接口,则返回null
。Enumeration<NetworkInterface>
getSubInterfaces()
获取连接到此网络接口的所有子接口(也称为虚拟接口)的枚举。int
hashCode()
返回对象的哈希码值。Stream<InetAddress>
inetAddresses()
获取绑定到此网络接口的InetAddresses的全部或一部分子流。boolean
isLoopback()
返回网络接口是否是环回接口。boolean
isPointToPoint()
返回网络接口是否是点对点接口。boolean
isUp()
返回网络接口是否启动并运行。boolean
isVirtual()
返回此接口是否为虚拟接口(也称为子接口)。static Stream<NetworkInterface>
networkInterfaces()
返回此机器上所有接口的Stream
。Stream<NetworkInterface>
subInterfaces()
获取附加到此网络接口的所有子接口(也称为虚拟接口)的流。boolean
supportsMulticast()
返回网络接口是否支持多播。String
toString()
返回对象的字符串表示形式。
-
-
-
方法详细信息
-
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
NetworkInterface
或null
如果没有指定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都相同。- 重写:
-
equals
在Object
- 参数
-
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可能或可能不被实现为对象的存储器地址的某些功能。)- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- 无论何时在执行Java应用程序时多次在同一个对象上调用该对象,则
-
-