一、ifconfig
可以看到,本机有许多IP地址,还未许多未截取。
而实际的IP是192.168.8.28
所以我们在读取本机IP的时候,需要去掉无效的IP。
因为本机安装了docker导致生成了许多虚拟网段的IP。
二、源码
java">
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;public class GetIPAddress {/*** 获取Linux下的IP地址** @return IP地址* @throws SocketException*/public static String getLinuxLocalIp() throws SocketException {String ip = "";try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();) {NetworkInterface intf = en.nextElement();String name = intf.getName();if (!name.contains("docker") && !name.contains("lo")) {for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses();enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {String ipaddress = inetAddress.getHostAddress().toString();if (!ipaddress.contains("::") && !ipaddress.contains("0:0:")&& !ipaddress.contains("fe80")) {ip = ipaddress;}}}}}} catch (SocketException ex) {System.out.println("获取ip地址异常");ex.printStackTrace();}System.out.println("IP:" + ip);return ip;}
}
运行程序,得到本机正确的IP地址。