Java NetworkInterface和InetAddress

版权声明:本文为博主原创文章,未经博主允许不得转载。 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为组织范围组播地址

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/84783768