我感兴趣的是记录Java程序的TCP通信,以便稍后重放-类似于Betamax等VCR框架所做的事情。挑战是创建一个代理来记录TCP流量,而不改变原始的Java程序。
我最初的想法是:假设我有一个任意的Java程序,它打开到不同服务(例如数据库)的TCP连接,并且我设置了JVM的socksProxyHost属性来连接到localhost,在那里我使用以下代码运行程序:
ServerSocket serverSocket = new ServerSocket(1080);
Socket socket = serverSocket.accept();有没有什么方法可以读取Java程序试图访问的原始主机和端口设置(在应用socksProxyHost和socksProxyPort选项之前)?如果是这样的话,我可以用原来的主机和端口打开一个新的套接字,然后转发/记录数据。
或者,是否有其他方法可以记录/重放(blackbox) Java程序(即,假设源代码不可用)和该程序使用的服务之间的TCP通信?
发布于 2013-03-25 18:50:50
有没有办法读取Java程序试图访问的原始主机和端口设置(在应用socksProxyHost和socksProxyPort选项之前)?
SOCKs客户机试图到达的主机和端口是client->server消息的一部分。所有这些都在Wikipedia page中进行了解释。
实际上,有一些现有的Java库支持SOCKs协议。
https://stackoverflow.com/questions/15612817
复制相似问题