C#SslStream阅读问题

时间:2013-11-07 23:20:35

标签: c# ssl sslstream

伙计们我使用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

并且第二次运行返回:

ET /whateverman

虽然结果应该是

GET /whateverman

问题是什么,是否有更好的方法从SslStream中读取?

1 个答案:

答案 0 :(得分:2)

结果完全符合预期(并且与SSL流没有直接关系) - 您正在转换未读取的字节。

如果你想从Stream手动读取字符串,你必须尊重Read调用的结果,告诉你回家实际从流中读取的字节数。

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

并且不要忘记连接字符串。

注意:使用某种类型的阅读器(StreamReader / BinaryReader)可能是更好的方法。