断点续传--我下面的代码出了什么问题,无法实现断点续传

adam601 2007-08-26 02:23:12
string StrFileName = @"D:\测试\C#\断点续传\DownLoad\军情观察室20070620.rmvb"; //根据实际情况设置

string StrUrl = "http://localhost:2155/断点续传/DataSource/军情观察室20070620.rmvb"; //根据实际情况设置


//打开上次下载的文件或新建文件

long lStartPos = 0;

System.IO.FileStream fs;

if (System.IO.File.Exists(StrFileName))
{

fs = System.IO.File.OpenWrite(StrFileName);

lStartPos = fs.Length;

fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针

}

else
{

fs = new System.IO.FileStream(StrFileName, System.IO.FileMode.Create);

lStartPos = 0;

}



//打开网络连接

try
{

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUrl);

request.Headers.Add("Accept-Ranges", "bytes");
//double filesize = request.GetResponse().ContentLength;

if (lStartPos > 0)
request.AddRange((int)lStartPos); //设置Range值

//向服务器请求,获得服务器回应数据流

System.Net.WebResponse response = (System.Net.WebResponse)request.GetResponse();
response.Headers.Add("Accept-Ranges", "bytes");
//long length = response.ContentLength;
System.IO.Stream ns = response.GetResponseStream();

string temp = response.Headers["Accept-Ranges"].ToString();

byte[] nbytes = new byte[512];

int nReadSize = 0;

nReadSize = ns.Read(nbytes, 0, 512);

while (nReadSize > 0)
{

fs.Write(nbytes, 0, nReadSize);

nReadSize = ns.Read(nbytes, 0, 512);

}

fs.Close();

ns.Close();

Console.WriteLine("下载完成");

}

catch (Exception ex)
{

fs.Close();

Console.WriteLine("下载过程中出现错误:" + ex.ToString());

}
...全文
73 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,251

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧