Linux上获取本机的真实IP地址(Java)
import java.net.Inet4Address;import java.net.Inet6Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import
·
一般情况直接输出的是127.0.0.1
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class Util {
public static void main(String[] a) throws UnknownHostException, SocketException{
InetAddress inet = getFirstNonLoopbackAddress(true,false);
System.out.println("local realIP: " + getIp());
}
public static String getIp(){
try {
return getFirstNonLoopbackAddress(true,false).getHostName() + "/" + getFirstNonLoopbackAddress(true,false).getHostAddress();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return " noIP!! ";
}
public static InetAddress getFirstNonLoopbackAddress(boolean preferIpv4, boolean preferIPv6) throws SocketException {
Enumeration en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface i = (NetworkInterface) en.nextElement();
for (Enumeration en2 = i.getInetAddresses(); en2.hasMoreElements();) {
InetAddress addr = (InetAddress) en2.nextElement();
if (!addr.isLoopbackAddress()) {
if (addr instanceof Inet4Address) {
if (preferIPv6) {
continue;
}
return addr;
}
if (addr instanceof Inet6Address) {
if (preferIpv4) {
continue;
}
return addr;
}
}
}
}
return null;
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)