为什么我在连接到网络的Stream上使用Read功能会得到不一致的结果?

时间:2012-10-11 17:53:22

标签: c# networking stream

我使用的是一个简单的功能: -

while((br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    //Write the data in downbuffer to a file.
}

虽然它适用于文件(在zip文件下载多次测试 - http://citylan.dl.sourceforge.net/project/cric-scoreslive/v8.5-Live%20Cricket%20Scores%20Desktop%20App.zip),但当链接引用HTML文件(在http://www.mediafire.com/?rc3kj22p1tb4vi9上测试)时,它无法正常工作。使用后面的链接,它只下载和写入大约1 KB的数据,而页面大约为60 KB。 如果它与没有刷新或任何事情有关,想知道它如何处理文件下载?相关代码是:-(在一个单独的线程中运行) -

wreq = (HttpWebRequest)WebRequest.Create(uri);
wres = wreq.GetResponse();
fs = new FileStream(totalpath, FileMode.Create);
bw = new BinaryWriter(fs);
br = new BinaryReader(wres.GetResponseStream());
while((onecount=br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    bw.Write(downbuffer, 0, onecount);
    totalcount += onecount;
}

totalpath导致文件,没什么特别的。 下行缓冲区大小为20 KB,我的网速约为60 kBps(512kbps)。

1 个答案:

答案 0 :(得分:4)

你可以通过避免它解决整个问题:

using (var client = new WebClient())
{
    client.DownloadFile(uri, totalpath);
}