Java--获取本机网卡上的所有ip

通常我们想要拿到本机ip都会使用这个方式:

 

try {
	System.out.println(InetAddress.getLocalHost().getHostAddress().toString());
	} catch (UnknownHostException e1) {
	// TODO Auto-generated catch block
	e1.printStackTrace();
};

但是这样可能不会得到我们想要的结果,可能会得到127.0.0.1  。为了能够拿到准确的本机ip。就需要从网卡中去进行读取。从读取到的ip列表去确定你需要的那个本机ip地址。

写法如下:

public static void main(String[] args) {
		Enumeration netInterfaces;
		try {
			// 拿到所有网卡
			netInterfaces = NetworkInterface.getNetworkInterfaces();
			InetAddress ip;
			// 遍历每个网卡,拿到ip
			while (netInterfaces.hasMoreElements()) {
				NetworkInterface ni = netInterfaces.nextElement();
				Enumeration addresses = ni.getInetAddresses();
				while (addresses.hasMoreElements()) {
					ip = addresses.nextElement();
					if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(':') == -1) {
						System.out.println(ni.getName() + " " + ip.getHostAddress());
					}
				}
			}
		} catch (Exception e) {
		}
	}

通过以上代码就可以拿到各个网卡的名称和ip了。

 

喜欢的朋友点个赞哦~~

 

你可能感兴趣的:(Java)