版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/84783768
1. NetworkInterface
使用NetworkInterface
类获得网络接口信息,调用NetworkInterface.getNetworkInterfaces()
获取所有网络接口。
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface ni = interfaces.nextElement();
System.out.println(ni);
}
输出
name:lo (Software Loopback Interface 1)
name:net0 (WAN Miniport (SSTP))
name:net1 (WAN Miniport (L2TP))
name:net2 (WAN Miniport (PPTP))
name:ppp0 (WAN Miniport (PPPOE))
name:eth0 (WAN Miniport (IPv6))
name:eth1 (WAN Miniport (Network Monitor))
name:eth2 (WAN Miniport (IP))
... ...
可以调用NetworkInterface.getByName(String)
通过名称获取网络接口
NetworkInterface ni = NetworkInterface.getByName("eth0");
System.out.println(ni);
输出
name:eth0 (WAN Miniport (IPv6))
2. InetAddress
使用InetAddress
类来获得制定域名的地址信息,调用InetAddress.getByName(String)
来获取地址,也可以调用InetAddress.getLocalHost()
来获取本地地址。
InetAddress addr = InetAddress.getByName("www.baidu.com");
System.out.println(addr.getHostName() + "/" + addr.getHostAddress());
addr = InetAddress.getLocalHost();
System.out.println(addr.getHostName() + "/" + addr.getHostAddress());
输出
www.baidu.com/115.239.210.27
peter-PC/192.168.254.2
判断地址类型
- isAnyLocalAddress(),true为通配地址
- addr.isLoopbackAddress(),true为回送地址
- addr.isLinkLocalAddress(),true为IPv6本地链接地址
- addr.isSiteLocalAddress(),true为IPv6本地网站地址
- addr.isMulticastAddress(),true为组播地址
- addr.isMCGlobal(),true为全球组播地址
- addr.isMCNodeLocal(),true为本地接口组播地址
- addr.isMCLinkLocal(),true为子网范围组播地址
- addr.isMCSiteLocal(),true为网站范围组播地址
- addr.isMCOrgLocal(),true为组织范围组播地址