我正在编写一个上传大量数据的程序,我需要限制它对网页浏览和其他用户活动的干扰.
上传由许多单独传输的大型文件组成,连接必须是标准HTTP POST(我无法控制服务器),我需要控制HTTP头(服务器使用它们进行身份验证和元数据)
当用户不再使用互联网时,上传将恢复全速非常重要,否则它将永远不会完成(我预计它将需要以全速运行一周或更长时间才能完成).
我想通过某种方式解决这个问题,使我的HTTP连接优先级低,检测打开的浏览器窗口并减慢速度并不能解决问题,因为(a)用户可能正在使用非浏览器应用程序(FTP,Twitter客户端,电子邮件)等等)和(b)如果有一个开放的闲置Web浏览器窗口,我不想放慢速度.
我找到了BITS,但我认为它与我无关,因为我需要它作为标准的HTTP POST.
我正在使用.net 3.5,该程序是用C#编写的,我目前正在使用HttpWebRequest进行上传.
澄清:我正在编写将在家中的客户个人计算机上运行的消费者软件.我的beta测试人员抱怨说,当他们运行我的程序时互联网很慢(可以理解,因为我正在使用他们所有的带宽)所以我想给其他程序更高的优先级,所以他们的互联网不再慢.
没有花哨的网络基础设施可以优先处理网络上的数据包,也没有IT团队可以安装和配置任何东西,我预计大多数客户都会有一个便宜的无线路由器,他们可以从他们的ISP免费获得
同时使用System.Net.NetworkInformation.IPv4InterfaceStatistics类的bytesSent属性以给定的间隔跟踪应用程序发送的字节数和网络上发送的总字节数.从网络上发送的总字节数(在同一时间间隔内)中减去应用在该时间间隔内发送的总字节数.如果差异足够高,您需要限制上传,请执行此操作.一旦差异变得足够小,就开始上传.
我希望你能解决问题的限制,所以你只需要知道两件事:
和
现在,使用其他API也许没问题,但是为什么要学习它们并介绍所有新的bug生成器,当你可以做一些更简单的事情时.
现在 - 上传大多数互联网连接(比如说ADSL)的问题是它们消耗的珍贵UPLOAD非常有限,比如256-512k.用户可能会报告问题,因为您的上传正在查杀他们发送的请求,因此他们无法获取任何数据.
我建议你做两件事......解决问题,做到这一点:
要解决多少是另一个问题.首先,您应该测量当其他人没有使用连接时您可以上传多少 - 您的每个客户端的基线上传速度.然后,使用WHEN技术,您可以降低上传速度,直到获得适用于其连接的"免费"结果.
希望我明确表示 - 询问是否需要澄清.
编辑:
还有很多事情需要考虑:
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |