问几个关于网络文件传输的问题:1、如何在下载前知道待下载文件资源的大小?资源可能是任意的互联网资源(而不仅仅是自己服务器上的资源)。就像 FlashGet 和迅雷一样,下载前都会显示下载文件的大小。
webRespone.ContentLength 只能在下载完成时获得。
WebClient.DownloadFile 根本无法获取文件的大小。
2、如何监控下载的进度(或估算下载的速度),也就是如何获取已经下载的字节数?
开另外的线程去监视磁盘上文件的大小的话,由于下载时刷新到硬盘的时间不确定,因而有时根本无法知道下载的速度。比较小文件干脆直接从 0 跳到文件的长度(已知文件长度的情况下),大的文件则可能是“跳步”,算出的下载速度极度不均匀(但是用 FlashGet 单线程下载仍然是均匀的。
3、如何将文件传送到指定的地址。也就是 P2P 文件传送......
4、如何实现多线程下载/上传?
webRespone.ContentLength 只能在下载完成时获得。
WebClient.DownloadFile 根本无法获取文件的大小。
2、如何监控下载的进度(或估算下载的速度),也就是如何获取已经下载的字节数?
开另外的线程去监视磁盘上文件的大小的话,由于下载时刷新到硬盘的时间不确定,因而有时根本无法知道下载的速度。比较小文件干脆直接从 0 跳到文件的长度(已知文件长度的情况下),大的文件则可能是“跳步”,算出的下载速度极度不均匀(但是用 FlashGet 单线程下载仍然是均匀的。
3、如何将文件传送到指定的地址。也就是 P2P 文件传送......
4、如何实现多线程下载/上传?
解决方案 »
- 谁能提供我一个上位机与设备进行数据绑定的思路?
- 请问这个的 单选框怎么做。 圆圈中的颜色不是默认的。 默认是白色。
- 关于获取IP所在地
- 使用C# Socket 发送结构体协议包,应该使用那个方法,help
- 我要写一个WINFORM里面有点复杂的自定义控件的属性编辑器,这个属性编辑器就会像TREE控件一样比较复杂,谁能举一个比较简单的例子?
- 如何从文本里取得我要的数据库连接字符串?
- data table有关
- dataview控件绑定数据源
- 如何知道指定目录中还有多少个目录,每个目录的名字是什么
- 请帮我看看我这段程序哪里写错了呀!!?
- 自己用mfc写了个dll,C#调用它跟调用一般的Win32 dll有何不同?
- 请问如何删除DataSet里的DataTable?
分块传输,每个线程负责一小块,最后主线程负责将文件合并。在日志里记录,可以实现断点上传下载
......
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/softs/os/WINXPPRO.iso");
request.Method = "HEAD";
long size = request.GetResponse().ContentLength;
....然后下载时把 Method 设定为 "GET"。这样对吧?(好像 GET 过,)
不对的话有应该怎样?
另外,分段下载文件时,怎么指定下载的区段?(比如如何告诉一个线程去下载 0-4096 KB 部分的内容,另外一个线程去下载 4091-8192 KB 范围的内容??
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/softs/os/WINXPPRO.iso");
request.Method = "HEAD";
long size = request.GetResponse().ContentLength;
....的写法是否正确?