後で再生できるようにJavaプログラムのTCP通信を記録することに興味があります。これは、ベータマックスのようなVCRフレームワークと同様です。課題は、元のJavaプログラムを変更せずにTCPトラフィックを記録するためのプロキシを作成することです。
私の最初のアイデア:さまざまなサービス(データベースなど)へのTCP接続を開く任意のJavaプログラムがありsocksProxyHost
、次のコードでプログラムを実行するローカルホストに接続するようにJVMのプロパティを設定するとします。
ServerSocket serverSocket = new ServerSocket(1080);
Socket socket = serverSocket.accept();
socksProxyHost
Javaプログラムが( andsocksProxyPort
オプションを適用する前に)到達しようとしていた元のホストとポートの設定を読み取る方法はありますか?もしそうなら、私は元のホストとポートで新しいソケットを開き、データを転送/記録することができます。
または、(ブラックボックス)Javaプログラム(つまり、ソースコードが利用できないと想定)とプログラムが使用するサービスとの間のTCP通信を記録/再生する別の方法はありますか?