C# HttpWebResponse下载限速
在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 非生产环境代码,请在实际使用时进行必要调整 // —— Mitchell Chu // Blog:blog.useasp.net HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (var response = (HttpWebResponse)request.GetResponse()) using (var stream = response.GetResponseStream()) { byte [] buffer = new byte [4096]; int read = 0; while ((read = stream.Read(buffer, 0, buffer.Length)) >0){ // buffer... } } |
使用这种方式,一旦我们开始下载数据,即是全速下载——即理论上是客户端和服务端的最小速度为当前下载速度。如果以这个速度持续下载,要不服务端被拖垮,要不就是客户端被服务端封禁。当然,一般情况下,后者居多。在持续的针对某站资源下载的时候,限速是非常必要的。
在HttpWebResponse里面限制下载速度比较简单,只需要控制读取的速度,即可达到限速的目的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 非生产环境代码,请在实际使用时进行必要调整 // —— Mitchell Chu // Blog:blog.useasp.net HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (var response = (HttpWebResponse)request.GetResponse()) using (var stream = response.GetResponseStream()) { byte [] buffer = new byte [4096]; int read = 0; long total_read = 0; DateTime begin = DateTime.Now; TimeSpan ts = new TimeSpan(); while ((read = stream.Read(buffer, 0, buffer.Length)) >0){ total_read += read; ts = DateTime.Now - begin; if ((total_read / ts.TotalSeconds) > 1024){ Thread.Sleep(1); // 休息一下. } } } |

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
狼叔:如何正确的学习Node.js
1. 【知乎Live】狼叔:如何正确的学习Node.js 预览地址 i5ting.github.io/How-to-lear… Live 简介 你好,我是 i5ting ,江湖人称「狼叔」,目前是阿里巴巴技术专家,斯达克学院( StuQ )明星讲师, Node.js 技术布道者。曾就职于去哪儿、新浪、网秦,做过前端、后端、数据分析,是一名全栈技术的实践者。 现在,越来越多的科技公司和开发者开始使用 Node.js 开发各种应用。Node.js除了能够辅助大前端开发外,还可以编写Web应用,封装Api,组装RPC服务等,甚至是开发VSCode编辑器一样的PC客户端。和其它技术相比, Node.js 简单易学,性能好、部署容易,能够轻松处理高并发场景下的大量服务器请求。Node.js 周边的生态也非常强大,NPM(Node包管理)上有超过60万个模块,日下载量超过3亿次。但编写 Node.js 代码对新人和其它语言背景的开发者来说,不是一件容易的事,在入门之前需要弄懂不少复杂的概念。 我身边也有很多人问我:如何学习 Node.js ?作为一名 Node.js 布道者,我做过很多 Node....
- 下一篇
JS高级技巧(简洁版)
高级函数 由于在JS中,所有的函数都是对象,所以使用函数指针十分简单,也是这些东西使JS函数有趣且强大 安全的类型检测 JS内置的类型检测机制并不是完全可靠的 typeof 操作符返回一个字符串,表示未经计算的操作数的类型,在大多数情况下很靠谱,但是当然还有例外 正则表达式 typeof /s/ === 'function'; // Chrome 1-12 , 不符合 ECMAScript 5.1 typeof /s/ === 'object'; // Firefox 5+ , 符合 ECMAScript 5.1 复制代码 NULL typeof null === 'object'; // 从一开始出现JavaScript就是这样的 复制代码 在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0,typeof null就错误的返回了object instanceof 运算符用来测试一个对象在其原型链中是否存在一...
相关文章
文章评论
共有0条评论来说两句吧...