我从一个SslStream中读到以下内容:
byte[] data = new byte[tcp.ReceiveBufferSize];
int bytesRead = -1;
do {
bytesRead = stream.Read(data, 0, data.Length);
using (MemoryStream ms = new MemoryStream(data, 0, bytesRead))
using (StreamReader rd = new StreamReader(ms))
{
string returnData = rd.ReadToEnd();
sb.Append(returnData);
}
} while (bytesRead != 0);它确实是从溪流中读来的。但是,由于流的实际长度未知,最后一次读取只会冻结应用程序。一个示例消息如下所示:
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: 11534
Server: Jetty(6.1.x)
{long json data here...}服务器返回内容的长度,但不是流的总长度。是否有一种成功读取此流的有效方法?
发布于 2015-06-04 02:26:39
我刚解决了同样的问题。我有一个缓冲区大小= 4096,为了防止在最后一次读取时冻结,我们需要检查SslStream.Read是否小于缓冲区大小。如果为真,则中断read循环,否则,我们将继续阅读。
https://stackoverflow.com/questions/21403404
复制相似问题