首页 > 其他分享 >ip地址

ip地址

时间:2022-12-13 13:45:53浏览次数:33  
标签:Exception return String ip NetworkInterface 地址 &&

package demo.sort;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class WebToolUtils {

/**
 * 获取本地IP地址
 *
 * @throws Exception
 */
public static String getLocalIP() throws Exception {

// if (isWindowsOS()) {
// return InetAddress.getLocalHost().getHostAddress();
// } else {
// return getLinuxLocalIp();
// }
try{
Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
while (allNetInterfaces.hasMoreElements()){
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
Enumeration addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()){
InetAddress ip = (InetAddress) addresses.nextElement();
if (ip != null
&& ip instanceof Inet4Address
&& !ip.isLoopbackAddress() //loopback地址即本机地址,IPv4的loopback范围是127.0.0.0 ~ 127.255.255.255
&& ip.getHostAddress().indexOf(":")==-1){
return ip.getHostAddress();
}
}
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}

/**
 * 获取Linux下的IP地址
 *
 * @return IP地址
 * @throws Exception
 */
private static String getLinuxLocalIp() throws Exception {
    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;

// System.out.println(ipaddress);
}
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return ip;
}

/**
 * 判断操作系统是否是Windows
 *
 * @return
 */
public static boolean isWindowsOS() {
    boolean isWindowsOS = false;
    String osName = System.getProperty("os.name");
    if (osName.toLowerCase().indexOf("windows") > -1) {
        isWindowsOS = true;
    }
    return isWindowsOS;
}


public static void main(String[] args) throws Exception {
    System.out.println(getLocalIP());
    System.out.println(getLinuxLocalIp());
}

}

标签:Exception,return,String,ip,NetworkInterface,地址,&&
From: https://www.cnblogs.com/kaka-qiqi/p/16978513.html

相关文章