1

後で再生できるようにJavaプログラムのTCP通信を記録することに興味があります。これは、ベータマックスのようなVCRフレームワークと同様です。課題は、元のJavaプログラムを変更せずにTCPトラフィックを記録するためのプロキシを作成することです。

私の最初のアイデア:さまざまなサービス(データベースなど)へのTCP接続を開く任意のJavaプログラムがありsocksProxyHost、次のコードでプログラムを実行するローカルホストに接続するようにJVMのプロパティを設定するとします。

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

socksProxyHostJavaプログラムが( andsocksProxyPortオプションを適用する前に)到達しようとしていた元のホストとポートの設定を読み取る方法はありますか?もしそうなら、私は元のホストとポートで新しいソケットを開き、データを転送/記録することができます。

または、(ブラックボックス)Javaプログラム(つまり、ソースコードが利用できないと想定)とプログラムが使用するサービスとの間のTCP通信を記録/再生する別の方法はありますか?

4

1 に答える 1

0

Javaプログラムが到達しようとしていた元のホストとポートの設定を読み取る方法はありますか(socksProxyHostおよびsocksProxyPortオプションを適用する前)?

SOCKクライアントが到達しようとしているホストとポートは、client->serverメッセージの一部です。それはすべてウィキペディアのページで説明されています。

実際、SOCKsプロトコルをサポートする既存のJavaライブラリがいくつかあります。

于 2013-03-25T10:50:50.163 に答える