我正在编写一个上传大量数据的程序,我需要限制它对Web浏览和其他用户 Activity 的干扰。

上载由许多单独传输的大型文件组成,连接必须是标准的HTTP POST(我无法控制服务器),并且我需要控制HTTP header (服务器将它们用于身份验证和元数据)

重要的是,当用户不再使用互联网时,上传将恢复全速运行,因为否则它将永远无法完成(我希望它将需要全速运行一周或更长时间才能完成)。

我想通过某种方式使我的HTTP连接具有较低的优先级来解决此问题,检测打开的浏览器窗口并放慢速度并不能解决问题,因为(a)用户可能正在使用非浏览器应用程序(FTP,Twitter客户端,电子邮件,等等)和(b)如果有空闲的网络浏览器窗口打开,我不想放慢速度。

我已经找到了BITS,但是我认为它与我无关,因为我需要它成为标准的HTTP POST。

我正在使用.net 3.5,该程序是用C#编写的,并且当前正在使用HttpWebRequest进行上传。

说明:我正在编写消费类软件,该软件将在客户家里的个人计算机上运行。我的Beta测试人员提示说,当他们运行我的程序时,互联网速度很慢(这是可以理解的,因为我正在使用它们的所有带宽),所以我想给其他程序更高的优先级,以使他们的互联网不再慢速。

没有可以在网络上优先处理数据包的高级网络基础架构,也没有IT团队来安装和配置任何东西,我希望大多数客户都会从他们的ISP免费获得便宜的无线路由器。

最佳答案

同时使用给定间隔的System.Net.NetworkInformation.IPv4InterfaceStatistics类的bytesSent属性跟踪应用程序发送的字节数和在网络上发送的总字节数。从网络上发送的总字节数(在相同的时间间隔内)减去该间隔内您的应用程序发送的总字节数。如果差异足够大,您需要限制上传速度,则可以这样做。一旦差异变得足够小,请加快上传速度。

10-01 21:02
查看更多