您的位置:

Java获取本机IP

介绍

在Java应用程序开发中,获取本机IP地址是一个非常常见的需求。本文将阐述如何使用Java代码获取本机IP地址,以及获取过程中需要注意的一些问题。

正文

1. 通过InetAddress类获取本机IP地址

Java中网络编程的基础类库中提供了InetAddress类,可以通过此类来获取本机IP地址。使用InetAddress类中的getLocalHost()方法,可以获取当前操作系统下的本机IP地址。 下面是Java代码示例:
import java.net.InetAddress;
import java.net.UnknownHostException;
    
public class GetLocalIpAddress {
    public static void main(String[] args) {
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            String ipAddress = inetAddress.getHostAddress();
            System.out.println("本机IP地址为:" + ipAddress);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
   }
}

2. 获取多个本地IP地址

如果当前系统存在多个网络接口,例如同时存在有线和无线网络接口,那么getLocalHost()方法获取到的本机IP地址可能不是我们期望的地址。此时可以使用NetworkInterface类来枚举本地的所有网络接口,获取到所有的IP地址。 下面是Java代码示例:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
    
public class GetLocalIpAddresses {
    public static void main(String[] args) {
        try {
            Enumeration
    networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                Enumeration
     inetAddresses = networkInterface.getInetAddresses();
                while (inetAddresses.hasMoreElements()) {
                    InetAddress inetAddress = inetAddresses.nextElement();
                    String ipAddress = inetAddress.getHostAddress();
                    System.out.println("本机IP地址为:" + ipAddress);
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

    
   

3. 获取指定网络接口的本地IP地址

如果需要获取指定网络接口的本地IP地址,可以使用NetworkInterface类中的getByName()方法获取指定名称的网络接口,然后就可以根据接口获取到IP地址。 下面是Java代码示例:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class GetIpAddressByInterface {
    public static void main(String[] args) {
        try {
            NetworkInterface networkInterface = NetworkInterface.getByName("en0");
            Enumeration
    inetAddresses = networkInterface.getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
                InetAddress inetAddress = inetAddresses.nextElement();
                String ipAddress = inetAddress.getHostAddress();
                System.out.println("本机IP地址为:" + ipAddress);
            }
        } catch (SocketException | UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

   

小结

本文介绍了Java获取本机IP地址的方法,包括通过InetAddress类获取本机IP地址、获取多个本地IP地址、获取指定网络接口的本地IP地址。通过本文的介绍,我们可以清楚地了解如何获取本机IP地址,并对Java的网络编程有更深入的认识。