SSL/TLS を使用するプロトコル分析を行いたいと思っています。幸運なことに、独自の証明書をインストールでき、DNS 部分は問題になりません。私の問題は、これを行うために何を使用するかです。パロスの使用を検討しましたが、その価値よりも面倒です。そのため、2 つの C# アプリケーションを作成できると考えました。1 つは疑似サーバーで、もう 1 つは疑似クライアントです。両方とも、2 つの間に tcp 接続があり、wireshark を使用できます。問題は、ストリームの経験がほとんどないことです。したがって、誰かが役立つ記事を教えてくれたり、コードがかなり短い場合は、サンプルがあれば素晴らしいでしょう. よろしくお願いします。
質問する
323 次
1 に答える
2
ストリームの読み取り/書き込みはそれほど難しくありません。ストリームを接続するだけでは不十分です。これを行うには、独自のコードが必要になります。できればそれ自体のスレッド(またはワーカープロセスやタスク、または必要なスレッドの概念)で。
public void ConnectStreams(Stream inStream, Stream outStream)
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
{
outStream.Write(buffer, 0, bytesRead);
outStream.Flush();
}
}
基本的に、ストリームはバイト配列で動作します。この行を実行すると:
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
基本的には、実行Read
しinStream
、読み取ったバイトをbuffer
インデックス0
(バッファ内)に配置し、最大1024
バイトを読み取ります。
bytesRead
次に、読み取られた実際のバイト数(この場合はその間)である戻り値を割り当て、それが0に等しくない場合は、ループを続行し0
ます。1024
次に、データを含むバッファを使用してデータをに書き戻すだけでoutStream
、実際に読み取られたバイト数がわかります。フラッシュを実行して、実際に出力を強制的に出力するのではなく、内部バッファーにスタックします。
ストリームがEOFに達すると、.Read
0が返され、ループが終了して続行できます。これは、最も単純なレベルで2つのストリームを「接続」する方法です。
于 2012-11-24T01:05:41.203 に答える