我有兴趣记录 Java 程序的 TCP 通信以启用以后的回放 - 类似于Betamax等 VCR 框架所做的。挑战在于在不改变原始 Java 程序的情况下创建一个记录 TCP 流量的代理。
我最初的想法:假设我有一个任意的 Java 程序,它打开到不同服务(例如数据库)的 TCP 连接,并且我将socksProxyHost
JVM 的属性设置为连接到 localhost,我在其中使用以下代码运行程序:
ServerSocket serverSocket = new ServerSocket(1080);
Socket socket = serverSocket.accept();
有什么方法可以读取 Java 程序试图访问的原始主机和端口设置(在应用socksProxyHost
andsocksProxyPort
选项之前)?如果是这样,那么我可以使用原始主机和端口打开一个新套接字并转发/记录数据。
或者是否有另一种方法来记录/重放(黑盒)Java 程序(即假设源代码不可用)和程序使用的服务之间的 TCP 通信?