From edaa364ccc37fe5372bca577482dd5d7142425cd Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 05 Aug 2024 18:30:53 +0800
Subject: [PATCH] 1

---
 websocketSerivce/src/main/java/org/example/util/IpAddressUtil.java |   50 ++++++++++++++++++++------------------------------
 1 files changed, 20 insertions(+), 30 deletions(-)

diff --git a/websocketSerivce/src/main/java/org/example/util/IpAddressUtil.java b/websocketSerivce/src/main/java/org/example/util/IpAddressUtil.java
index 631c373..08ebdf0 100644
--- a/websocketSerivce/src/main/java/org/example/util/IpAddressUtil.java
+++ b/websocketSerivce/src/main/java/org/example/util/IpAddressUtil.java
@@ -11,11 +11,9 @@
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.URL;
+import java.net.*;
 import java.nio.charset.StandardCharsets;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
@@ -31,36 +29,27 @@
 public class IpAddressUtil  {
 
     // ip2region.xdb 文件地址常量(本地xdb文件路径)
-    public static String XDB_PATH = "D:\\项目\\demo\\websocketSerivce\\src\\main\\resources\\ip\\csdn-ip2region.xdb";
+    public static String XDB_PATH = PropertiesUtil.getProperty("XDB_PATH");
 
     /**
      * 获取IP地址:
      */
     public static String getIpAddress(HttpServletRequest request) {
-        String ipAddress = null;
-        try {
-            ipAddress = request.getHeader("X-Forwarded-For");
-            if (ipAddress != null && ipAddress.length() != 0 && !"unknown".equalsIgnoreCase(ipAddress)) {
-                // 多次反向代理后会有多个ip值,第一个ip才是真实ip
-                if (ipAddress.contains(",")) {
-                    ipAddress = ipAddress.split(",")[0];
-                }
-            }
-            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-                ipAddress = request.getHeader("Proxy-Client-IP");
-            }
-            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-                ipAddress = request.getHeader("WL-Proxy-Client-IP");
-            }
-            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-                ipAddress = request.getHeader("HTTP_CLIENT_IP");
-            }
-            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
-                ipAddress = request.getRemoteAddr();
-            }
-        } catch (Exception e) {
-            log.error("获取IP地址异常,{}", e.getMessage());
+        // 获取客户端真实 IP 地址
+        String ipAddress = request.getHeader("X-Forwarded-For");
+
+        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("Proxy-Client-IP");
         }
+
+        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getRemoteAddr();
+        }
+
         return ipAddress;
     }
 
@@ -105,6 +94,7 @@
                 //log.info("{地区: {}, IO操作数: {}, 耗时: {} μs}", region, searcher.getIOCount(), cost);
                 return region;
             } catch (Exception e) {
+                e.printStackTrace();
                 log.error("获取IP地址异常:{} ", e.getMessage());
                 throw new RuntimeException("获取IP地址异常");
             }
@@ -238,8 +228,8 @@
 
     public static void main(String[] args) {
 
-        String ip = "183.162.252.0";// 国内IP
-        String abroadIp = "48.119.248.100"; // 国外IP
+        String ip = "26.26.26.1";// 国内IP
+        String abroadIp = "26.26.26.1"; // 国外IP
 
         System.out.println("方法一(国内):" + getIpPossessionByFile(ip));
         System.out.println("方法二(国内):" + getCityInfoByVectorIndex(ip));

--
Gitblit v1.9.3