您的位置:

Java获取本机IP详解

一、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地址:

Enumeration allNetInterfaces = 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界面和系统命令等,读者可以根据自己的需要选择最适合自己的方法。