Commit 9a8c231e6b59a7a7265738938452b623299c9d17

Authored by 王通
1 parent 4878b5a1

1.获取本地ip

src/main/java/com/bsth/util/IpUtils.java
1   -package com.bsth.util;
2   -
3   -import javax.servlet.http.HttpServletRequest;
4   -
5   -public class IpUtils {
6   -
7   - public static String getIpAddr(HttpServletRequest request) {
8   - if (request == null) {
9   - return "unknown";
10   - }
11   - String ip = request.getHeader("x-forwarded-for");
12   - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
13   - ip = request.getHeader("Proxy-Client-IP");
14   - }
15   - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
16   - ip = request.getHeader("X-Forwarded-For");
17   - }
18   - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
19   - ip = request.getHeader("WL-Proxy-Client-IP");
20   - }
21   - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
22   - ip = request.getHeader("X-Real-IP");
23   - }
24   - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
25   - ip = request.getRemoteAddr();
26   - }
27   - return ip;
28   - }
29   -}
  1 +package com.bsth.util;
  2 +
  3 +import javax.servlet.http.HttpServletRequest;
  4 +import java.net.Inet4Address;
  5 +import java.net.InetAddress;
  6 +import java.net.NetworkInterface;
  7 +import java.util.Enumeration;
  8 +
  9 +public class IpUtils {
  10 +
  11 + public static String getIpAddr(HttpServletRequest request) {
  12 + if (request == null) {
  13 + return "unknown";
  14 + }
  15 + String ip = request.getHeader("x-forwarded-for");
  16 + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  17 + ip = request.getHeader("Proxy-Client-IP");
  18 + }
  19 + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  20 + ip = request.getHeader("X-Forwarded-For");
  21 + }
  22 + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  23 + ip = request.getHeader("WL-Proxy-Client-IP");
  24 + }
  25 + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  26 + ip = request.getHeader("X-Real-IP");
  27 + }
  28 + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  29 + ip = request.getRemoteAddr();
  30 + }
  31 + return ip;
  32 + }
  33 +
  34 + /**
  35 + * 获取本地IP地址
  36 + * @return
  37 + */
  38 + public static String getLocalIpAddress() {
  39 + try {
  40 + Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
  41 + InetAddress ip = null;
  42 + while (allNetInterfaces.hasMoreElements()) {
  43 + NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
  44 + if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp() || "docker0".equals(netInterface.getDisplayName())) {
  45 + continue;
  46 + } else {
  47 + Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
  48 + while (addresses.hasMoreElements()) {
  49 + ip = addresses.nextElement();
  50 + if (ip != null && ip instanceof Inet4Address) {
  51 + return ip.getHostAddress();
  52 + }
  53 + }
  54 + }
  55 + }
  56 + } catch (Exception e) {
  57 + System.err.println("IP地址获取失败" + e.toString());
  58 + }
  59 +
  60 + return "";
  61 + }
  62 +}
... ...