import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class test_01 {
public static void main(String[] args) throws SocketException {
//获取网络接口的基本信息
//method_01();
private static void method_01() throws SocketException {
Enumeration<NetworkInterface> networkInterfaceEnumeration = NetworkInterface.getNetworkInterfaces();
while (networkInterfaceEnumeration.hasMoreElements()){
NetworkInterface networkInterface = networkInterfaceEnumeration.nextElement();
if (networkInterface.isUp() == true){
System.out.println("getName获得网络设备名称 = "+networkInterface.getName());
System.out.println("getDisplayName获得网络设备显示名称 = "+networkInterface.getDisplayName());
System.out.println("getIndex获得网络接口的索引 = "+networkInterface.getIndex());
System.out.println("isUp是否已经开启并运行 = "+networkInterface.isUp());
System.out.println("isLoopBack是否为回调接口 = "+networkInterface.isLoopback());
System.out.println("\n");
}
}
}
//获取MTU大小,网络传输以数据包为单位,用MTU来规定网络传输最大数据包的大小,单位字节,
//MTU大,传输速度快,延迟高,MTU小,传输速度慢
//不要随意更改MTU
//method_02();
private static void method_02() throws SocketException {
Enumeration<NetworkInterface> networkInterfaceEnumeration = NetworkInterface.getNetworkInterfaces();
while (networkInterfaceEnumeration.hasMoreElements()){
NetworkInterface networkInterface = networkInterfaceEnumeration.nextElement();
if(networkInterface.isUp()){
System.out.println("网络设备名称:"+networkInterface.getName());
System.out.println("网络设备显示名称:"+networkInterface.getDisplayName());
//-1代表网络接口禁用
System.out.println("最大传输单元:"+networkInterface.getMTU());
System.out.println("\n");
}
}
}
//获取子接口,虽然windows上没有:
method_03();
private static void method_03() throws SocketException{
try{
Enumeration<NetworkInterface> networkInterface = NetworkInterface.getNetworkInterfaces();
while(networkInterface.hasMoreElements()){
NetworkInterface eachNetWork = networkInterface.nextElement();
System.out.println("eachNetWork父接口的hashcode = "+eachNetWork.hashCode());
System.out.println("eachNetWork的设备名字getName = "+eachNetWork.getName());
System.out.println("eachNetWork的设备显示名称 = "+eachNetWork.getDisplayName());
System.out.println("eachNetWork是否为虚拟接口 = "+eachNetWork.isVirtual());
System.out.println("eachNetWork的父接口 = "+eachNetWork.getParent());
System.out.println("eachNetWork的的子接口信息:");
Enumeration<NetworkInterface>subNetworkInterfaces = eachNetWork.getSubInterfaces();
while(subNetworkInterfaces.hasMoreElements()){
NetworkInterface subNetworkInterface = subNetworkInterfaces.nextElement();
System.out.println("子接口网络设备名称:"+subNetworkInterface.getName());
System.out.println("子接口网络设备显示名称:"+subNetworkInterface.getDisplayName());
System.out.println("子接口是否为虚拟接口:"+subNetworkInterface.isVirtual());
System.out.println("父接口的hashCode:"+subNetworkInterface.getParent().hashCode());
System.out.println("");
System.out.println("");
}
System.out.println("");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
在linux系统:阿里云centos7.x上:
代码:
编译
执行,可以看到,这台centos没有虚拟的子接口