merge database1 and 2
Change-Id: I43364775eaaa5ec4b9c74abfb437245824c9c922
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;