diff --git a/src/main/java/tracker/DataCaptureProxy.java b/src/main/java/tracker/DataCaptureProxy.java
index be7d9f6..c2ed137 100644
--- a/src/main/java/tracker/DataCaptureProxy.java
+++ b/src/main/java/tracker/DataCaptureProxy.java
@@ -3,6 +3,8 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.net.URL;
 
 import org.simpleframework.http.Request;
@@ -21,25 +23,40 @@
     public DataCaptureProxy(String trackerHost, int trackerPort) {
         this.trackerHost = trackerHost;
         this.trackerPort = trackerPort;
-        this.tracker = new Tracker(); // 初始化Tracker实例
+        this.tracker = new Tracker(); // 初始化 Tracker 实例
     }
 
     @Override
     public void handle(Request req, Response resp) {
         try {
             // 提取并打印关键参数
-            String infoHash  = req.getParameter("info_hash");
-            String uploaded  = req.getParameter("uploaded");
-            String downloaded= req.getParameter("downloaded");
-            String passkey   = req.getParameter("passkey");
+            String infoHash   = req.getParameter("info_hash");
+            String uploaded   = req.getParameter("uploaded");
+            String downloaded = req.getParameter("downloaded");
+            String passkey    = req.getParameter("passkey");
+
+            // 获取客户端IP地址
+            String clientIp;
+            // 直接从 TCP 连接（socket 源地址）中读取
+            SocketAddress socketAddress = req.getClientAddress();
+            if (socketAddress instanceof InetSocketAddress) {
+                clientIp = ((InetSocketAddress) socketAddress)
+                               .getAddress()
+                               .getHostAddress();
+            } else {
+                // 兜底写法，将整个 SocketAddress 转为字符串
+                clientIp = socketAddress.toString();
+            }
+
             System.out.println(
                 "Captured announce → info_hash=" + infoHash +
                 ", uploaded=" + uploaded +
                 ", downloaded=" + downloaded +
-                ", passkey=" + passkey
+                ", passkey=" + passkey +
+                ", client_ip=" + clientIp
             );
 
-            // 调用Tracker方法更新上传和下载数据
+            // 调用 Tracker 方法更新上传和下载数据
             if (passkey != null && !passkey.isEmpty()) {
                 try {
                     if (uploaded != null && !uploaded.isEmpty()) {
@@ -61,7 +78,7 @@
             }
 
             // 构造转发 URL
-            String path  = req.getPath().getPath();
+            String path = req.getPath().getPath();
             String query = req.getQuery().toString();
             String targetUrl = "http://" + trackerHost + ":" + trackerPort
                              + path + "?" + query;
