- java.lang.Object
-
- java.net.NetworkInterface
-
public final class NetworkInterface extends Object
此类表示由名称和分配给此接口的IP地址列表组成的网络接口。 它用于标识加入多播组的本地接口。 接口通常以诸如“le0”之类的名称而为人所知。- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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()
获取包含绑定到此网络接口的全部或部分InetAddresses的枚举。List<InterfaceAddress>
getInterfaceAddresses()
获取此网络接口的InterfaceAddresses
的全部或部分列表。int
getMTU()
返回此接口的最大传输单元(MTU)。String
getName()
获取此网络接口的名称。static Enumeration<NetworkInterface>
getNetworkInterfaces()
返回此计算机上所有接口的Enumeration
。NetworkInterface
getParent()
如果这是子接口,则返回此接口的父NetworkInterface;如果是物理(非虚拟)接口或没有父接口,则返回null
。Enumeration<NetworkInterface>
getSubInterfaces()
获取附加到此网络接口的所有子接口(也称为虚拟接口)的枚举。Stream<InetAddress>
inetAddresses()
获取绑定到此网络接口的所有或部分InetAddresses的流。boolean
isLoopback()
返回网络接口是否为环回接口。boolean
isPointToPoint()
返回网络接口是否为点对点接口。boolean
isUp()
返回网络接口是否已启动并正在运行。boolean
isVirtual()
返回此接口是否为虚拟接口(也称为子接口)。static Stream<NetworkInterface>
networkInterfaces()
返回此计算机上所有接口的Stream
。Stream<NetworkInterface>
subInterfaces()
获取连接到此网络接口的所有子接口(也称为虚拟接口)的流。boolean
supportsMulticast()
返回网络接口是否支持多播。
-
-
-
方法详细信息
-
getName
public String getName()
获取此网络接口的名称。- 结果
- 此网络接口的名称
-
getInetAddresses
public Enumeration<InetAddress> getInetAddresses()
获取包含绑定到此网络接口的全部或部分InetAddresses的枚举。如果有安全管理器,则为每个InetAddress调用其
checkConnect
方法。 只有checkConnect
不会抛出SecurityException的InetAddresses才会在Enumeration中返回。 但是,如果调用者具有NetPermission
(“getNetworkInformation”)权限,则返回所有InetAddresses。- 结果
- Enumeration对象,其中包含绑定到此网络接口的全部或部分InetAddresses
- 另请参见:
-
inetAddresses()
-
inetAddresses
public Stream<InetAddress> inetAddresses()
获取绑定到此网络接口的所有或部分InetAddresses的流。如果有安全管理器,则为每个InetAddress调用其
checkConnect
方法。 只有在checkConnect
不会抛出SecurityException的InetAddresses才会在Stream中返回。 但是,如果调用者具有NetPermission
(“getNetworkInformation”)权限,则返回所有InetAddresses。- 结果
- 一个Stream对象,其中包含绑定到此网络接口的全部或部分InetAddresses
- 从以下版本开始:
- 9
-
getInterfaceAddresses
public List<InterfaceAddress> getInterfaceAddresses()
获取此网络接口的InterfaceAddresses
的全部或部分列表。如果有安全管理器,则使用每个InterfaceAddress的InetAddress调用其
checkConnect
方法。 只有checkConnect
不会抛出SecurityException的InterfaceAddresses将在List中返回。- 结果
-
List
对象,包含此网络接口的全部或部分InterfaceAddress - 从以下版本开始:
- 1.6
-
getSubInterfaces
public Enumeration<NetworkInterface> getSubInterfaces()
获取附加到此网络接口的所有子接口(也称为虚拟接口)的枚举。例如,eth0:1将是eth0的子接口。
- 结果
- 一个Enumeration对象,包含此网络接口的所有子接口
- 从以下版本开始:
- 1.6
- 另请参见:
-
subInterfaces()
-
subInterfaces
public Stream<NetworkInterface> subInterfaces()
获取连接到此网络接口的所有子接口(也称为虚拟接口)的流。- 结果
- 一个Stream对象,包含该网络接口的所有子接口
- 从以下版本开始:
- 9
-
getParent
public NetworkInterface getParent()
如果这是子接口,则返回此接口的父NetworkInterface;如果是物理(非虚拟)接口或没有父接口,则返回null
。- 结果
-
NetworkInterface
此接口附加到。 - 从以下版本开始:
- 1.6
-
getIndex
public int getIndex()
返回此网络接口的索引。 索引是大于或等于零的整数,或者对于未知的-1
。 这是特定于系统的值,具有相同名称的接口可以在不同的计算机上具有不同的索引。- 结果
-
如果索引未知,则此网络接口的索引或
-1
- 从以下版本开始:
- 1.7
- 另请参见:
-
getByIndex(int)
-
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
- 另请参见:
-
getIndex()
-
getByInetAddress
public static NetworkInterface getByInetAddress(InetAddress addr) throws SocketException
搜索具有绑定到其的指定Internet协议(IP)地址的网络接口的便捷方法。如果指定的IP地址绑定到多个网络接口,则不会定义返回哪个网络接口。
- 参数
-
addr
- 要搜索的InetAddress
。 - 结果
-
如果没有具有指定IP地址的网络接口,
NetworkInterface
或null
。 - 异常
-
SocketException
- 如果发生I / O错误。 -
NullPointerException
- 如果指定的地址是null
。
-
getNetworkInterfaces
public static Enumeration<NetworkInterface> getNetworkInterfaces() throws SocketException
返回此计算机上所有接口的Enumeration
。Enumeration
包含至少一个元素,可能表示仅支持此计算机上的实体之间的通信的回送接口。- API Note:
-
此方法可与
getInetAddresses()
结合使用,以获取此节点的所有IP地址 - 结果
- 在此计算机上找到的NetworkInterface枚举
- 异常
-
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);
- 结果
- 在此计算机上找到的NetworkInterface流
- 异常
-
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。- 重写:
-
equals
类Object
- 参数
-
obj
- 要比较的对象。 - 结果
-
true
如果对象相同; 否则为false
。 - 另请参见:
-
InetAddress.getAddress()
-
-