1

アプリをテストするサーバーとして SslStream を使用していますが、ストリームからの読み取りに問題があります。私は次のコードを使用しています:

        while (true)
        {
            int read = sslStream.Read(buffer, 0, buffer.Length);

            string bufferString = System.Text.Encoding.Default.GetString(buffer);

            // Check for End?
            if (bufferString.IndexOf("\n\r\n", System.StringComparison.Ordinal) != -1)
            {
                break;
            }
        }

問題は、最初のループが返されることです。

G\0\0\0\0\0

2 回目の実行では次の値が返されます。

ET /whateverman

結果は

GET /whateverman

問題は何ですか? SslStream から読み取るためのより良い方法はありますか?

4

1 に答える 1

2

結果は期待どおりです (SSL ストリームとは直接関係ありません)。読み取っていないバイトを変換しています。

ストリームから文字列を手動で読み取る場合は、ストリームから実際に読み取られたバイト数をホームに通知する Read 呼び出しの結果を尊重する必要があります。

string partialString = System.Text.Encoding.Default.GetString(buffer, 0, read);

そして、文字列を連結することを忘れないでください。

注: ある種のリーダー ( StreamReader/ BinaryReader) を使用する方がよい場合があります。

于 2013-11-08T00:04:38.453 に答える