0

SSL/TLS を使用するプロトコル分析を行いたいと思っています。幸運なことに、独自の証明書をインストールでき、DNS 部分は問題になりません。私の問題は、これを行うために何を使用するかです。パロスの使用を検討しましたが、その価値よりも面倒です。そのため、2 つの C# アプリケーションを作成できると考えました。1 つは疑似サーバーで、もう 1 つは疑似クライアントです。両方とも、2 つの間に tcp 接続があり、wireshark を使用できます。問題は、ストリームの経験がほとんどないことです。したがって、誰かが役立つ記事を教えてくれたり、コードがかなり短い場合は、サンプルがあれば素晴らしいでしょう. よろしくお願いします。

4

1 に答える 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)

基本的には、実行ReadinStream、読み取ったバイトをbufferインデックス0(バッファ内)に配置し、最大1024バイトを読み取ります。

bytesRead次に、読み取られた実際のバイト数(この場合はその間)である戻り値を割り当て、それが0に等しくない場合は、ループを続行し0ます。1024

次に、データを含むバッファを使用してデータをに書き戻すだけでoutStream、実際に読み取られたバイト数がわかります。フラッシュを実行して、実際に出力を強制的に出力するのではなく、内部バッファーにスタックします。

ストリームがEOFに達すると、.Read0が返され、ループが終了して続行できます。これは、最も単純なレベルで2つのストリームを「接続」する方法です。

于 2012-11-24T01:05:41.203 に答える