無需request物件獲取當前的IP資訊,非127.0.0.1
阿新 • • 發佈:2019-02-16
package com.suyun.vehicle.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 常用獲取客戶端資訊的工具 */ public final class NetworkUtil { private static Logger LOGGER = LoggerFactory.getLogger(NetworkUtil.class); public static String IP = ""; static { try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { Enumeration<InetAddress> ni = ((NetworkInterface) netInterfaces.nextElement()).getInetAddresses(); if (ni.hasMoreElements()) { IP = ni.nextElement().getHostAddress(); if (!"127.0.0.1".equals(IP) && IP.indexOf(":") == -1 && isIP(IP)) { LOGGER.info("當前機器受用的IP是"+IP); break; } } } } catch (SocketException e) { LOGGER.error("獲取當前伺服器IP失敗" + e); } } public static boolean isIP(String addr) { if (addr.length() < 7 || addr.length() > 15 || "".equals(addr)) { return false; } /** * 判斷IP格式和範圍 */ String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"; Pattern pat = Pattern.compile(rexp); Matcher mat = pat.matcher(addr); boolean ipAddress = mat.find(); return ipAddress; } public static void main(String[] args) { System.out.println(NetworkUtil.IP); } }