学做断点续传下载程序遇到的问题(分不够可以加)

时间:2022-06-11 00:09:40
我在学做一个断点续传的下载程序  我想一个线程下到一定量就写下文件  但现在我无法知道HttpWebResponse真正获得多少数据
HttpWebRequest hwrq=(HttpWebRequest) WebRequest.Create(fileurl);
hwrq.AddRange(FromPos);
HttpWebResponse hwrp=(HttpWebResponse) hwrq.GetResponse();
Stream StreamResponse=hwrp.GetResponseStream();  //这里是下载完写到StreamResponse中但是我没办法获得时时的(真实的)下载多少
StreamReader StreamRead=new StreamReader(StreamResponse);
char []ReadBuff=new char[1024];
int count=StreamRead.Read(ReadBuff,0,1024);
~~~~~~

我在csdn文档中心找到过类似的文章但是实在难懂。
请各位高手交我一下  请具体点 我是个新手  分不是问题,可以另开贴子给分。

22 个解决方案

#1


up

#2


不会,帮顶!

#3


自己顶

#4


up

#5


如果大家觉得我上面的方法不好或者更本就是错误的 可以提出自己的方法

#6


自己顶

#7


自己顶

#8


帮你顶顶。

#9


int count=StreamRead.Read(ReadBuff,0,1024);
这个方法表明了从0位置开始读取1024个字节,你想下载到一定量就写文件那么你就判断你读了几次文件就能知道你下载了多少文件(n * 1024字节   n代表读取文件的次数),或者你直接使用
int count = StreamRead.Read(ReadBuff, 0, n) //n表示你写文件所需的大小

#10


up

#11


TO Matthewzhong你的方法是要等到StreamResponse全部都下载完了 再从StreamResponse取出数据 即 本地到本地 而不是我要的网络传导本地的数据量

我在CSDN文档中心找到这片文章  但是好像太难了 而且感到有点错(肯能是水平有限把) 希望大家帮我提出解决  检测出时时下载数据量的难题   谢谢

#12


up

#13


用StreamRead.Read(ReadBuff,0,1024);这种方法获取数据不需要将数据全部下载完,具体要下载多少数据是有你自己定的,我这个方法是下载1K的数据,你也可以根据你自己的需要修改。

#14


gghg

#15


TO Matthewzhong你的意思是  先下1024  然后再循环请求hwrq.AddRange(FromPos+1024) 对马

#16


我做过自定义的断点续传,每个连接前自定义握手协议。控制channel告诉客户端文件信息,数据传输channel告诉服务器offset及希望大小。offset及大小根据控制channel获得的文件信息用简单的n分法获得。一个传输channel结束后查询下个工作中的传输channel,用2分法获得新offset及大小,修改原channel大小。这样很容易实现多点续传。

#17


to psn(psn)
你是用什么类下载的 能给代码吗
doudou-shen@163.com

#18


建议阅读:

《.NET网络高级编程》清华大学出版

可能会找到你想要的答案。

#19


这本书我等了很久了   上海没有买   网上好像也没有  郁闷!
谁有请发给我 
doudou-shen@163.com

#20


ding

#21


ding

#22


我是自定义协议,你也可以查阅相应rfc了解标准。
TcpListener
Socket

#1


up

#2


不会,帮顶!

#3


自己顶

#4


up

#5


如果大家觉得我上面的方法不好或者更本就是错误的 可以提出自己的方法

#6


自己顶

#7


自己顶

#8


帮你顶顶。

#9


int count=StreamRead.Read(ReadBuff,0,1024);
这个方法表明了从0位置开始读取1024个字节,你想下载到一定量就写文件那么你就判断你读了几次文件就能知道你下载了多少文件(n * 1024字节   n代表读取文件的次数),或者你直接使用
int count = StreamRead.Read(ReadBuff, 0, n) //n表示你写文件所需的大小

#10


up

#11


TO Matthewzhong你的方法是要等到StreamResponse全部都下载完了 再从StreamResponse取出数据 即 本地到本地 而不是我要的网络传导本地的数据量

我在CSDN文档中心找到这片文章  但是好像太难了 而且感到有点错(肯能是水平有限把) 希望大家帮我提出解决  检测出时时下载数据量的难题   谢谢

#12


up

#13


用StreamRead.Read(ReadBuff,0,1024);这种方法获取数据不需要将数据全部下载完,具体要下载多少数据是有你自己定的,我这个方法是下载1K的数据,你也可以根据你自己的需要修改。

#14


gghg

#15


TO Matthewzhong你的意思是  先下1024  然后再循环请求hwrq.AddRange(FromPos+1024) 对马

#16


我做过自定义的断点续传,每个连接前自定义握手协议。控制channel告诉客户端文件信息,数据传输channel告诉服务器offset及希望大小。offset及大小根据控制channel获得的文件信息用简单的n分法获得。一个传输channel结束后查询下个工作中的传输channel,用2分法获得新offset及大小,修改原channel大小。这样很容易实现多点续传。

#17


to psn(psn)
你是用什么类下载的 能给代码吗
doudou-shen@163.com

#18


建议阅读:

《.NET网络高级编程》清华大学出版

可能会找到你想要的答案。

#19


这本书我等了很久了   上海没有买   网上好像也没有  郁闷!
谁有请发给我 
doudou-shen@163.com

#20


ding

#21


ding

#22


我是自定义协议,你也可以查阅相应rfc了解标准。
TcpListener
Socket