一、IP地址定义
IP(Internet Protocol)地址是计算机在网络中的唯一标识,用来标识计算机在网络中的位置。IP地址分为IPv4和IPv6两种类型。由于IPv6的普及率相对较低,本文主要介绍IPv4的获取方式。
二、Java获取本机IP地址的方法
Java提供了多种方式获取本机IP地址,下面就分别介绍几种方法。
1. 使用InetAddress类的getLocalHost()方法
这是最简单、最常用的获取本机IP地址的方法。InetAddress类表示IP地址,并提供了获取IP地址的方法。getLocalHost()方法用于返回本地主机的InetAddress对象。
InetAddress address = InetAddress.getLocalHost(); //获取本机IP地址 String localIP = address.getHostAddress(); //获取本机IP地址字符串 System.out.println("本机IP地址为:" + localIP);
2. 使用NetworkInterface类的getNetworkInterfaces()方法
NetworkInterface类表示网络接口,即网卡。getNetworkInterfaces()方法返回多个网络接口,通过遍历这些网络接口可以获取本机的IP地址。
EnumerationallNetworkInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress localAddress = null; while (allNetworkInterfaces.hasMoreElements()) { NetworkInterface networkInterface = allNetworkInterfaces.nextElement(); Enumeration addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress address = addresses.nextElement(); if (!address.isLinkLocalAddress() && !address.isLoopbackAddress() && address instanceof Inet4Address) { localAddress = address; break; } } if (localAddress != null) { break; } } String localIP = localAddress.getHostAddress(); System.out.println("本机IP地址为:" + localIP);
3. 使用了Java API的jdns.jar包中的代码
jdns.jar包是Java提供的一个第三方库,其用途是获取操作系统的DNS解析记录。使用这个库可以得到所有主机的IPv4地址。
DNSRecord[] dnsRecords = DNSResolver.getAllByName(InetAddress.getLocalHost().getHostName(), DNSRecordType.A); for (DNSRecord dnsRecord : dnsRecords) { if (dnsRecord instanceof ARecord) { String localIP = ((ARecord) dnsRecord).getAddress().getHostAddress(); System.out.println("本机IP地址为:" + localIP); } }
三、IP地址的获取结果
通过以上方法可以获取到本机的IP地址,可以在控制台中输出或者在程序中使用。
需要注意的是,一个计算机可能会有多个本地IP地址,比如同时连接了有线网络和WiFi网络的情况下。使用上述方法获取到的IP地址是其中一个IP地址,并不代表是全部IP地址。