您的位置:

Java获取IP地址的方法

在网络编程中,获取IP地址是很常见的需求。Java提供了多种方法来获取IP地址,我们可以根据具体的业务需求,选择不同的方法。本文将从多个方面详细阐述Java获取IP地址的方法,帮助读者更好地了解和掌握这一知识点。

一、通过InetAddress获取IP地址

Java提供了InetAddress类,可以方便地获取本机IP地址和指定域名的IP地址。以下是获取本机IP地址和指定域名的IP地址的示例代码:
import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressTest {
    public static void main(String[] args) {
        try {
            // 获取本机IP地址
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println("本机IP地址:" + localHost.getHostAddress());

            // 获取指定域名的IP地址
            InetAddress baidu = InetAddress.getByName("www.baidu.com");
            System.out.println("百度IP地址:" + baidu.getHostAddress());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}
上述代码使用了InetAddress类的getLocalHost和getByName方法分别获取本机IP地址和百度的IP地址。运行结果如下: 本机IP地址:192.168.0.1 百度IP地址:220.181.38.148

二、通过NetworkInterface获取本机IP地址

除了通过InetAddress类获取本机IP地址外,Java还提供了NetworkInterface类用于获取网络接口信息。我们可以通过遍历NetworkInterface类中的所有网络接口,获取每个网络接口对应的IP地址。以下是获取本机IP地址的示例代码:
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class NetworkInterfaceTest {
    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();
                    // 只输出IPv4地址
                    if (inetAddress.getAddress().length == 4) {
                        System.out.println(networkInterface.getName() + ":" + inetAddress.getHostAddress());
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

   
  
上述代码中,我们使用了NetworkInterface类的getNetworkInterfaces方法获取所有网络接口,然后遍历每个网络接口的所有IP地址,并输出IPv4地址。运行结果如下: lo:127.0.0.1 wlo1:192.168.0.1

三、使用第三方库获取IP地址

除了Java自带的工具类以外,还可以使用第三方库来实现IP地址的获取。比如,Apache Commons Net中的FTPClient类提供了获取本机IP地址的方法,以下是示例代码:
import org.apache.commons.net.ftp.FTPClient;

import java.io.IOException;

public class FTPClientTest {
    public static void main(String[] args) {
        try {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect("ftp.mozilla.org");
            System.out.println("本机IP地址:" + ftpClient.getLocalAddress().getHostAddress());
            ftpClient.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
上述代码中,我们使用了FTPClient的getLocalAddress方法获取本机IP地址。需要注意的是,该方法需要在FTPClient成功连接至FTP服务器后才能调用。运行结果如下: 本机IP地址:192.168.0.1

结论

本文从InetAddress、NetworkInterface和第三方库三个方面详细阐述了Java获取IP地址的方法,并给出了相应的代码示例。在实际业务场景中,我们可以根据具体的需求来选择合适的方法来获取IP地址。