您的位置:

如何获取本地IP地址?

在网络通信中,IP地址是非常重要的标识符,它能够唯一标识一个网络上的主机。在Java程序中,如果需要获取本机的IP地址,有以下几种方式。

一、通过InetAddress获取本机IP地址

Java提供了一个InetAddress类,可以很方便地获取本机IP地址。示例代码如下:


import java.net.InetAddress;
public class GetLocalIPAddress {
	public static void main(String[] args) {
		try {
			InetAddress address = InetAddress.getLocalHost();
			System.out.println("本机IP地址:" + address.getHostAddress());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

执行上述程序后,输出结果为:


本机IP地址:10.1.2.3

需要注意的是,InetAddress.getLocalHost()方法有可能会返回127.0.0.1,这是因为它是返回当前主机的loopback地址。如果想要获得非loopback地址,则需要其他的方法来获取。

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

另一种获取本机IP地址的方式是通过NetworkInterface类。该类提供了一个getNetworkInterfaces()方法,返回一个枚举对象,包含当前机器上所有的网络接口。可以通过该接口获取到本机IP地址。示例代码如下:


import java.net.*;
import java.util.Enumeration;

public class GetLocalIPAddress {
    public static void main(String[] args) {
        try {
            Enumeration
    interfaces = NetworkInterface.getNetworkInterfaces();

            while (interfaces.hasMoreElements()) {
                NetworkInterface ni = interfaces.nextElement();
                Enumeration
     addresses = ni.getInetAddresses();

                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();

                    if (!address.isLinkLocalAddress() && !address.isLoopbackAddress()
                            && address instanceof Inet4Address) {
                        System.out.println("本机IP地址:" + address.getHostAddress());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

    
   

执行上述程序后,输出结果为:


本机IP地址:10.1.2.3

该方法可以获取到本机的所有IP地址,而不只是一个loopback地址。

三、总结

本文介绍了两种获取本机IP地址的方法,并给出了详细代码示例。使用这些方法,可以很方便地获取本机IP地址,方便网络编程的开发。