多线程下载文件请求偏移的问题

zhuaiman 2007-12-14 04:19:21
感谢大家抽出时间解决我这个问题,综述:
1、单线程下载测试OK;
2、多线程下载每个线程跟踪发现下的文件块【开始、结束】位置相同
3、多线程下载线程合并和文件合并OK,所以如果要下一个文本文件内容为:
I'm a Programmer 得到的文本将为: I'm a PrI'm a Pr
/***********************文件分割***********************/
……省略,经检查和临时文件输出,发现无问题……
/***********************部分源码***********************/

/***********************块下载(每个线程中都要执行的部分)***********************/
((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
mSourceStream = _Request.GetResponse().GetResponseStream();

byte[] buff = new byte[1024];
int currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
while (mBytesFinished+currentSize <= this.MaxSize
&¤tSize>0)
{
TargetStream.Write(buff, 0, currentSize);
mBytesFinished += currentSize;
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);

}
if (mBytesFinished+currentSize>this.MaxSize)
{
TargetStream.Write(buff, 0, (int)(this.MaxSize-mBytesFinished));
mBytesFinished += (this.MaxSize-mBytesFinished);
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
}
mRequest.Abort();
mFinished = true;
/***********************部分源码***********************/

/***********************合并***********************/
……无问题……
/***********************部分源码***********************/

提问:((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
这句执行了请求的文件内容根本没有偏移,如何解决?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuaiman 2007-12-14
  • 打赏
  • 举报
回复
谢谢0xff 的热心帮助哦,我在继续找原因
gt5070073 2007-12-14
  • 打赏
  • 举报
回复
:)
0xff 2007-12-14
  • 打赏
  • 举报
回复
排出其他原因,就是你的this.Start没变...
0xff 2007-12-14
  • 打赏
  • 举报
回复
不会没有偏移的,除非服务器端问题(不支持)
0xff 2007-12-14
  • 打赏
  • 举报
回复
http://download.csdn.net/source/274988
下载看源码

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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