伙计们我使用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中读取?
答案 0 :(得分:2)
结果完全符合预期(并且与SSL流没有直接关系) - 您正在转换未读取的字节。
如果你想从Stream手动读取字符串,你必须尊重Read调用的结果,告诉你回家实际从流中读取的字节数。
string partialString = System.Text.Encoding.Default.GetString(buffer, 0, read);
并且不要忘记连接字符串。
注意:使用某种类型的阅读器(StreamReader
/ BinaryReader
)可能是更好的方法。