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

第二次运行返回:

ET /whateverman

结果应该是

GET /whateverman

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

4

1 回答 1

2

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

如果您想从 Stream 手动读取字符串,您必须尊重 Read 调用的结果,它告诉您实际从流中读取的许多字节。

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

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

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

于 2013-11-08T00:04:38.453 回答