一、InetAddress类的使用
Java中获取本机IP的常见方法是使用InetAddress类。该类用于标识网络上的主机,提供了多种获取IP地址的方法。
通过以下代码段获取本机IP地址:
InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress(); System.out.println("本机IP地址 :" + ip);
上述代码中,首先通过静态方法getLocalHost()
获取本地主机地址信息,然后调用getHostAddress()
方法获取本机IP地址。该方法返回一个字符串,包含了本机的IPv4或IPv6地址。
除了上述方法,InetAddress类还提供了其它一些用于获取IP地址的方法,如通过域名获取IP地址、获取本机主机名等。
二、NetworkInterface类的使用
除了InetAddress类,Java还提供了NetworkInterface类,该类可用于获取与当前主机接口相关的信息,包括IP地址、MAC地址等。
通过以下代码段获取本机所有IP地址:
EnumerationallNetInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (allNetInterfaces.hasMoreElements()) { NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); Enumeration addresses = netInterface.getInetAddresses(); while (addresses.hasMoreElements()) { ip = addresses.nextElement(); if (ip != null && ip instanceof Inet4Address) { System.out.println("本机IP地址:" + ip.getHostAddress()); } } }
上述代码中,首先通过静态方法getNetworkInterfaces()
获取当前主机所有的网络接口,然后遍历所有的网络接口,获取每个接口的地址信息,并输出所有IPv4地址。
三、通过Java GUI界面获取IP地址
除了通过代码获取IP地址之外,Java还提供了GUI界面获取IP地址的方法。
通过以下代码段在GUI界面上获取IP地址:
import java.net.InetAddress; import javax.swing.JOptionPane; public class IPDialog { public static void main(String[] args) throws Exception { InetAddress address = InetAddress.getLocalHost(); JOptionPane.showMessageDialog(null, address.getHostAddress()); } }
上述代码中,首先通过静态方法getLocalHost()
获取本地主机地址信息,然后弹出一个消息对话框,显示本机的IP地址。
四、通过系统命令获取IP地址
除了通过Java API获取IP地址之外,还可以通过执行系统命令获取IP地址。
通过以下代码段获取本机IP地址:
Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec("ifconfig"); InputStream is = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { if (line.contains("inet ")) { String[] tokens = line.split("\\s+"); System.out.println("IP地址 :" + tokens[1]); } } br.close(); is.close();
上述代码中,首先通过Runtime类的exec()
方法执行系统命令ifconfig
来获取系统网络配置信息,在输出流中读取命令结果,并查找包含inet
的行,从中提取出IP地址。
五、总结
本文详细介绍了Java获取本机IP的多种方法,包括使用InetAddress类、NetworkInterface类、GUI界面和系统命令等,读者可以根据自己的需要选择最适合自己的方法。