3

重複の可能性:
C# で単純なプロキシを作成するには?

すべてのネットワーク接続を処理したいプロキシ アプリケーションをプログラミングしています。サーバー アプリケーションとクライアント アプリケーションは既にプログラムしているので、あとはネットワーク接続をリダイレクトするだけです。

いろいろ調べた結果、以下のことがわかりました。

//For sniffing the socket to capture the packets has to be a raw socket, with the
//address family being of type internetwork, and protocol being IP
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

//Bind the socket to the selected IP address
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(cmbInterfaces.Text), 0));

//Set the socket  options
mainSocket.SetSocketOption(SocketOptionLevel.IP,    //Applies only to IP packets
SocketOptionName.HeaderIncluded,                    //Set the include the header
true);                                              //option to true

byte[] byTrue = new byte[4] {1, 0, 0, 0};
byte[] byOut = new byte[4]{1, 0, 0, 0}; //Capture outgoing packets

元のリクエストをキャンセルできないため、これが役立つかどうかはわかりません。これを行う最も簡単な方法は何ですか?

4

1 に答える 1

0

すべてのネットワーク トラフィックを透過的にインターセプトできるようにする唯一の方法は、ドライバーを使用することです。明らかな理由から、これは c# では実行できません。そうは言っても、カーネル モード コンポーネントとしてwinpcapを使用し、C# でアプリケーション ロジックを実行することは可能かもしれません。winpcap で動作するように書かれた相互運用コードが既にいくつかありますが、私はそれを使用していないため、サポートがどれほど安定しているか、完全であるかはわかりません。

于 2012-10-05T19:35:43.167 に答える