1

我有兴趣记录 Java 程序的 TCP 通信以启用以后的回放 - 类似于Betamax等 VCR 框架所做的。挑战在于在不改变原始 Java 程序的情况下创建一个记录 TCP 流量的代理。

我最初的想法:假设我有一个任意的 Java 程序,它打开到不同服务(例如数据库)的 TCP 连接,并且我将socksProxyHostJVM 的属性设置为连接到 localhost,我在其中使用以下代码运行程序:

ServerSocket serverSocket = new ServerSocket(1080);
Socket socket             = serverSocket.accept();

有什么方法可以读取 Java 程序试图访问的原始主机和端口设置(在应用socksProxyHostandsocksProxyPort选项之前)?如果是这样,那么我可以使用原始主机和端口打开一个新套接字并转发/记录数据。

或者是否有另一种方法来记录/重放(黑盒)Java 程序(即假设源代码不可用)和程序使用的服务之间的 TCP 通信?

4

1 回答 1

0

有什么方法可以读取 Java 程序试图访问的原始主机和端口设置(在应用 socksProxyHost 和 socksProxyPort 选项之前)?

SOCKs 客户端试图到达的主机和端口是客户端->服务器消息的一部分。这一切都在Wikipedia 页面中进行了解释。

事实上,有一些现有的 Java 库支持 SOCKs 协议。

于 2013-03-25T10:50:50.163 回答