当Stream.CanSeek为false时,我为什么要这样做

时间:2017-04-06 18:23:20

标签: c# stream

我使用此代码从IP Camera中捕获图像:

HttpWebRequest reqs = (HttpWebRequest)WebRequest.Create("http://" + ip + snapshotCommand);
reqs.Method = "POST";
reqs.Timeout = 4000;
reqs.Credentials = new NetworkCredential(user, pass);
reqs.PreAuthenticate = true;

HttpWebResponse resp = (HttpWebResponse)reqs.GetResponse();
if (resp != null)
{
    Stream stm = resp.GetResponseStream();
    img = new Bitmap(stm);
    stm.Close();
}

但是,由于CanSeek& CanWrite是假的。 我尝试了很多方法,例如Copyto(MemoryStream),但问题仍然存在。 你能帮帮我吗?

这是使用MemoryStream的代码:

Stream stm = resp.GetResponseStream(); 
MemoryStream ms = new MemoryStream(); 
stm.CopyTo(ms); 
ms.Position = 0; 

ReadTimeout&的这个“ms” WriteTimeout投掷: 消息“此流不支持超时。” 因为canTimeout()对于MemoryStream也是假的。

最后我找到了这个解决方案,效果很好: https://stackoverflow.com/a/2368505/492628

1 个答案:

答案 0 :(得分:1)

如果流不可搜索,您应该能够将流复制到内存流中

以下a post可能有所帮助。