java InetAddress.getLocalHost();返回127.0.0.1 ...如何获取真实IP

作者:编程家 分类: java 时间:2025-06-19

如何获取真实IP地址

在Java中,我们可以使用InetAddress类的getLocalHost()方法来获取本机的IP地址。然而,这种方式获取的IP地址通常是127.0.0.1,也就是本地回环地址。要获取真实的IP地址,我们需要使用其他的方式。

通过网络接口获取真实IP地址

在Java中,我们可以通过获取网络接口的方式来获取真实的IP地址。网络接口是计算机与网络之间进行通信的接口,每个网络接口都对应着一个IP地址。

首先,我们需要获取所有的网络接口信息。可以通过NetworkInterface类的getNetworkInterfaces()方法来实现。然后,我们遍历所有的网络接口,找到非回环地址的网络接口,再获取该网络接口上的IP地址。

下面是一个示例代码,演示如何通过网络接口获取真实的IP地址:

java

import java.net.*;

import java.util.*;

public class GetRealIPAddress {

public static void main(String[] args) throws SocketException {

Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

while(networkInterfaces.hasMoreElements()) {

NetworkInterface networkInterface = networkInterfaces.nextElement();

if(networkInterface.isLoopback() || !networkInterface.isUp()) {

continue;

}

Enumeration inetAddresses = networkInterface.getInetAddresses();

while(inetAddresses.hasMoreElements()) {

InetAddress inetAddress = inetAddresses.nextElement();

if(inetAddress instanceof Inet4Address) {

System.out.println("Real IP Address: " + inetAddress.getHostAddress());

}

}

}

}

}

在上面的代码中,我们首先获取所有的网络接口信息,并遍历这些网络接口。对于每个网络接口,我们判断是否是回环接口或者不可用接口,如果是,则跳过。然后,我们获取该网络接口上的所有IP地址,并判断是否为IPv4地址,如果是,则输出该地址。

运行以上代码,我们就能够获取到真实的IP地址。

通过上述方法,我们可以获取到真实的IP地址。在实际应用中,我们可以根据具体的需求选择不同的方式来获取IP地址。无论是通过InetAddress类的getLocalHost()方法还是通过网络接口,都可以满足我们获取IP地址的需求。