JavaDemo——获取系统网卡和ip

demo:

/**
 * 2020年9月16日上午10:47:14
 */
package testgetip;

import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;

/**
 * @author XWF
 *
 */
public class TestGetIp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//获得本地ip
		try {
			InetAddress addr1 = InetAddress.getLocalHost();
			System.out.println(addr1);
			System.out.println(addr1.getHostAddress());
			System.out.println(addr1.getHostName());
			//是否是通配符地址,ipv4是0.0.0.0,ipv6是0:0:0:0:0:0:0:0
			System.out.println("-isAnyLocalAddress:" + addr1.isAnyLocalAddress());
			//是否是本地连接,ipv4范围169.254.0.0-169.254.255.255,ipv6范围以FE8开头的
			System.out.println("-isLinkLocalAddress:" + addr1.isLinkLocalAddress());
			//是否是本地地址,ipv4范围以127开头,ipv6是0:0:0:0:0:0:0:1
			System.out.println("-isLoopbackAddress:" + addr1.isLoopbackAddress());
			//多播地址是否是全球范围,ipv4范围224.0.0.0-239.255.255.255里去除224.0.0.0和239开头的剩下的全部,ipv6范围第一字节FF第二字节OE-FE
			System.out.println("-isMCGlobal:" + addr1.isMCGlobal());
			//是否是本地链接范围的多播,ipv4范围224.0.0.0-224.0.0.255,ipv6范围第一字节FF第二字节02-F2
			System.out.println("-isMCLinkLocal:" + addr1.isMCLinkLocal());
			//是否是本地接口多播,ipv4无,ipv6范围第一字节FF第二字节01-F1
			System.out.println("-isMCNodeLocal:" + addr1.isMCNodeLocal());
			//是否是组织本地范围的多播,ipv4范围第一字节239第二字节>=192第三字节<=195,ipv6范围第一字节FF第二字节08-F8
			System.out.println("-isMCOrgLocal:" + addr1.isMCOrgLocal());
			//是否是站点范围的多播,ipv4范围239.255.0.0-239.255.255.255,ipv6范围第一字节FF第二字节05-F5
			System.out.println("-isMCSiteLocal:" + addr1.isMCSiteLocal());
			//是否为多播地址,ipv4范围224.0.0.0-239.255.255.255,ipv6范围以FF开头
			System.out.println("-isMulticastAddress:" + addr1.isMulticastAddress());
			//测试地址是否可访问,超时认为无法访问(可抛出IOException)
			System.out.println("-isReachable:" + addr1.isReachable(1000));
			//测试地址是否可访问,指定网络接口(null为任何接口)、最大跳数、超时时间(可抛出IOException)
			System.out.println("-isReachable:" + addr1.isReachable(null, 3, 1000));
			//是否是站点本地地址,ipv4范围10.0.0.0-10.255.255.255和172.16.0.0-172.31.255.255和192.168.0.0-192.168.255.255,ipv6范围以FEC开头
			System.out.println("-isSiteLocalAddress:" + addr1.isSiteLocalAddress());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//获得网卡和ip信息
		try {
			Enumeration<NetworkInterface> it = NetworkInterface.getNetworkInterfaces();
			while(it.hasMoreElements()) {
				NetworkInterface net = it.nextElement();
				System.out.println(String.format("--isup:%s, isloopback:%s, isptp:%s, isvirtual:%s, net:%s", 
						net.isUp(), net.isLoopback(), net.isPointToPoint(), net.isVirtual(), net));
				Enumeration<InetAddress> addrs = net.getInetAddresses();
				while(addrs.hasMoreElements()) {
					InetAddress addr = addrs.nextElement();
					System.out.println("  " + addr.getHostAddress());
					System.out.println(String.format("  \tanylocal:%s ,linklocal:%s ,loopback:%s ,sitelocal:%s", 
							addr.isAnyLocalAddress(), addr.isLinkLocalAddress()
							, addr.isLoopbackAddress(), addr.isSiteLocalAddress()));
				}
			}
		} catch (SocketException e) {
			e.printStackTrace();
		}
	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值