控制网络上传速度的方法及系统的制作方法

文档序号:7931146阅读:100来源:国知局
专利名称:控制网络上传速度的方法及系统的制作方法
技术领域
本发明涉及计算机通信领域,特别涉及一种控制网络上传速度的方法及系统。背景技术
网络上传速度的大小会影响用户的网络体验,在带宽一定且同信道传输的情况下,当一个软件占有较大网络上传速度时,会限制其他软件的网络上传速度和网络下载速度。如用户使用某P2P软件程序作为服务端上传资源时,会影响浏览网页的速度。传统的控制网络上传速度的方法,一般是软件控制自身的上传速度。若控制其它软件的上传速度,多数采用延时发送的方法。然而对上传速度依赖于单一的延时发送,延时过长容易引发连接中断,网络连接不稳定。

发明内容基于此,有必要提供一种能提高网络连接稳定性的控制网络上传速度的方法。一种控制网络上传速度的方法,包括以下步骤获取进程的输入输出请求包,并将所述输入输出请求包放入队列,其中,所述进程预设有限速值;统计所述进程当前 的发送流量值,并根据所述限速值及统计的发送流量值计算进程当前的空闲流量值;从所述队列中提取输入输出请求包,并按照所述空闲流量值发送所述输入输出请求包。优选地,在所述获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤之前还包括建立传输驱动接口层的过滤驱动的步骤。优选地,还包括步骤对每个进程分别设定限速值,对每个进程创建相应的队列;获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤具体为获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。优选地,获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤之后还包括将所述输入输出请求包以限速值为粒度拆分成多个子输入输出请求包;从所述队列中提取输入输出请求包,并按照所述空闲流量进行发送的步骤为从所述队列中提取子输入输出请求包,并按照所述空闲流量发送所述子输入输出请求包。优选地,从所述队列中提取输入输出请求包的步骤之后,还包括步骤获取所述输入输出请求包的长度,判断所述输入输出请求包的长度是否大于所述空闲流量值,若是,则将所述输入输出请求包以空闲流量值为粒度进行拆分,并按照空闲流量值发送所述拆分后的输入输出请求包,若否,则直接按照空闲流量值发送所述输入输出请求包。
此外,还有必要提供一种能提高网络连接稳定性的控制网络上传速度的系统。一种控制网络上传速度的系统,包括获取模块,用于获取进程的输入输出请求包,并将所述输入输出请求包放入队列,其中,所述进程预设有限速值;统计模块,用于统计所述进程当前的发送流量值,并根据所述限速值及统计的发送流量值计算进程当前的空闲流量值;发送模块,用于从所述队列中提取输入输出请求包,并按照所述空闲流量值发送所述输入输出请求包。优选地,还包括创建模块,所述创建模块用于建立传输驱动接口层的过滤驱动。优选地,还包括设置模块,所述设置模块用于对每个进程分别设定限速值,所述创建模块还用于对每个进程创建相应的队列;所述获取模块还用于获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。优选地,还包括拆分模块,所述拆分模块用于将所述输入输出请求包以限速值为粒度拆分成多个子输入输出请求包;所述发送模块还用于从所述队列中提取子输入输出请求包,并按照所述空闲流量发送所述子输入输出请求包。优选地,还包括判断模块和拆分模块,所述获取模块还用于在所述发送模块从所述队列中提取出输入输出请求包后,获取所述输入输出请求包的长度;所述判断模块用于判断所述输入输出请求包的长度是否大于所述空闲流量值;所述拆分模块用于在所述输入输出请求包的长度大于所述空闲流量值时`,将所述输入输出请求包以空闲流量值为粒度进行拆分,所述发送模块还用于按照空闲流量值发送所述拆分后的输入输出请求包;所述发送模块还用于在所述输入输出请求包的长度不大于所述空闲流量值时,直接按照空闲流量值发送所述输入输出请求包。上述控制网络上传速度的方法及系统,采用设定限速值,统计当前的发送流量值,计算出当前的空闲流量值,按照该空闲流量值发送输入输出请求包,不需延时发送,提高了网络连接的稳定。

图1为一个实施例中控制网络上传速度的方法的流程图;图2为一个实施例中从队列中提取输入输出请求包,根据空闲流量值发送输入输出请求包的具体流程图;图3为一个实施例中控制网络上传速度的系统的结构示意图;图4为另一个实施例中控制网络上传速度的系统的结构示意图;图5为另一个实施例中控制网络上传速度的系统的结构示意图。
具体实施方式为了使本发明的目的、技术方案及优点更加清楚,下面结合具体的实施例及附图进行详细的描述。如图1所示,在一个实施例中,一种控制网络上传速度的方法,包括以下步骤步骤S110,获取进程的输入输出请求包,并将该输入输出请求包放入队列,其中,该进程预设有限速值。软件上传数据以进程方式运行,进程设定有限速值。输入输出请求包(I/ORequestPacket,简称IRP)中包含数据包的长度、内容等参数。将输入输出请求包放入队列中以等待发送。在一个实施例中,在步骤SllO之前还包括步骤建立传输驱动接口层的过滤驱动。在Windows系统下网络的收发包都会经过TDI (Transport Drive Interface,传输驱动接口层)驱动层,在TDI上建立过滤驱动就可以控制网络发包,即对网络上传速度进行控制。在一个实施例中,在步骤SllO之前还包括步骤对每个进程分别设定限速值,对每个进程创建相应的队列。对每个进程设定的限速值可以相同或者不同。设定限速值后,并创建相应的队列,将每个进程的输入输出请求包分别放入相应的队列中,方便分别对每个进程的上传速度进行控制。另外,设定的限速值应考虑实际的网络带宽,即限速值大于网络带宽,则限速没有多大用处。对每个进程分别设定限速值及创建相应的队列后,步骤SllO具体为获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。在一个实施例中,在步骤SllO之后还包括步骤将该输入输出请求包以限速值为粒度拆分成多个子输入输出请求包。当输入输出请求包的长度大于限速值时,可以以限速值为粒度拆分成多个子输入输出请求包。以限速值为粒度,即限速值为一个单元。将输入输出请求包分成多个限速值大小的子输入输出请求包。如此,可将输入输出请求包以均匀方式发送。当输入输出请求包的长度不大于限速值时,则不需拆分。步骤S120,统计该进程当前的发送流量值,并根据该限速值及统计的发送流量值计算进程当前的空闲流量值。

可定时统计该进程当前的发送流量值。该定时的时间可为I秒、5秒等,即每隔I秒、5秒统计一次。空闲流量值是指限速后可用的流量值,如限速值为200kb,当前的发送流量值为lOOkb,当前的空闲流量值为100kb。步骤S130,从该队列中提取输入输出请求包,并按照该空闲流量值发送该输入输出请求包。从队列中按照放入队列中的先后次序,依次从队列中提取输入输出请求包,然后按照得到的空闲流量值发送,即将空闲流量值作为上传速度进行上传。当将输入输出请求包以限速值为粒度分成多个子输入输出请求包后,步骤S130变为从该队列中提取子输入输出请求包,并按照该空闲流量发送该子输入输出请求包。在一个实施例中,从队列中提取输入输出请求包后,如图2所示,还包括步骤步骤S210,获取该输入输出请求包的长度。步骤S220,判断该输入输出请求包的长度是否大于空闲流量值,若是,则执行步骤S230,若否,则执行步骤S240。步骤S230,将该输入输出请求包以空闲流量值为粒度拆分,按照空闲流量值发送该拆分后的输入输出请求包。因输入输出请求包的长度大于空闲流量值,将无法一次发送该输入输出请求包,需将其进行拆分,可以空闲流量值为粒度进行拆分,使其一次能最大限度的发送。
步骤S240,直接按照空闲流量值发送该输入输出请求包。在其他实施例中,当将输入输出请求包拆分成多个子输入输出请求包后,从队列中提取子输入输出请求包,获取子输入输出请求包的长度,判断子输入输出请求包的长度是否大于空闲流量值,若是,则将子输入输出请求包以空闲流量值为粒度拆分,按空闲流量值发送拆分后的子输入输出请求包,若否,则按空闲流量值直接发送子输入输出请求包。如图3所不,在一个实施例中,一种控制网络上传速度的系统,包括获取模块310、统计模块320和发送模块330。获取模块310用于获取进程的输入输出请求包,并将该输入输出请求包放入队列,其中,该进程预设有限速值。输入输出请求包中包含数据包的长度、内容等参数。将输入输出请求包放入队列中以等待发送。统计模块320用于统计该进程当前的发送流量值,并根据该限速值及统计的发送流量值计算进程当前的·空闲流量值。可定时统计该进程当前的发送流量值。该定时的时间可为I秒、5秒等,即每隔I秒、5秒统计一次。空闲流量值是指限速后可用的流量值,如限速值为200kb,当前的发送流量值为lOOkb,当前的空闲流量值为lOOkb。发送模块330用于从该队列中提取输入输出请求包,并按照该空闲流量值发送该输入输出请求包。发送模块330从队列中按照放入队列中的先后次序,依次从队列中提取输入输出请求包,然后按照得到的空闲流量值发送,即将空闲流量值作为上传速度进行上传。在另一个实施例中,如图4所示,上述控制网络上传速度的系统,除了包括获取模块310、统计模块320和发送模块330,还包括创建模块340和设置模块350。创建模块340用于建立传输驱动接口层的过滤驱动。在Windows系统下网络的收发包都会经过TDI (Transport Drive Interface,传输驱动接口层)驱动层,在TDI上建立过滤驱动就可以控制网络发包,即对网络上传速度进行控制。设置模块350用于对每个进程分别设定限速值。对每个进程设定的限速值可以相同或者不同。 创建模块340还用于对每个进程创建相应的队列。获取模块310还用于获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。方便分别对每个进程的上传速度进行控制。另外,设定的限速值应考虑实际的网络带宽,即限速值大于网络带宽,则限速没有多大用处。在另一个实施例中,如图5所示,上述控制网络上传速度的系统,除了包括获取模块310、统计模块320、发送模块330、创建模块340和设置模块350,还包括拆分模块360和判断模块370。其中,拆分模块360用于将该输入输出请求包以限速值为单位拆分成多个子输入输出请求包。当输入输出请求包的长度大于限速值时,可以以限速值为粒度拆分成多个子输入输出请求包。以限速值为粒度,即限速值为一个单元。将输入输出请求包分成多个限速值大小的子输入输出请求包。如此,可将输入输出请求包以均匀方式发送。当输入输出请求包的长度不大于限速值时,则不需拆分。发送模块330还用于从该队列中提取子输入输出请求包,并按照空闲流量发送该子输入输出请求包。
获取模块310还用于在发送模块330从该队列中提取出输入输出请求包后,获取该输入输出请求包的长度。判断模块370用于判断该输入输出请求包的长度是否大于空闲流量值。拆分模块360用于在该输入输出请求包的长度大于该空闲流量值时,将该输入输出请求包以空闲流量值为粒度拆分;发送模块330还用于按照空闲流量值发送拆分后的输入输出请求包。因输入输出请求包的长度大于空闲流量值,将无法一次发送该输入输出请求包,需将其进行拆分,可以空闲流量值为粒度进行拆分,使其一次能最大限度的发送。发送模块330还用于在该输入输出请求包的长度不大于空闲流量值时,直接按照空闲流量值发送该输入输出请求包。在其他实施例中,当将输入输出请求包拆分成多个子输入输出请求包后,发送模块330从队列中提取子输入输出请求包时,获取模块310获取子输入输出请求包的长度,判断模块370判断子输入输出请求包的长度是否大于空闲流量值,若是,则拆分模块360将子输入输出请求包以空闲流量值为粒度拆分,发送模块330按空闲流量值发送拆分后的子输入输出请求包,若否,则发送模块330按空闲流量值直接发送子输入输出请求包。上述控制网络上传速度的方法及系统,采用设定限速值,统计当前的发送流量值,计算出当前的空闲流量值,按照该空闲流量值发送输入输出请求包,不需延时发送,提高了网络连接的稳定。另外,采用在传输驱动接口层建立过滤驱动实现对网络上传速度的有效控制;采用对每个进程分别设定限速值,并建立相应的队列,实现对每个进程上传速度分别控制,且上传速度可限制精确到字节;采用将输入输出请求包以限速值为粒度拆分,保证发送长度的均匀性。 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种控制网络上传速度的方法,包括以下步骤 获取进程的输入输出请求包,并将所述输入输出请求包放入队列,其中,所述进程预设有限速值; 统计所述进程当前的发送流量值,并根据所述限速值及统计的发送流量值计算进程当前的空闲流量值; 从所述队列中提取输入输出请求包,并按照所述空闲流量值发送所述输入输出请求包。
2.根据权利要求1所述的控制网络上传速度的方法,其特征在于,在所述获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤之前还包括建立传输驱动接口层的过滤驱动的步骤。
3.根据权利要求1或2所述的控制网络上传速度的方法,其特征在于,还包括步骤 对每个进程分别设定限速值,对每个进程创建相应的队列; 获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤具体为 获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。
4.根据权利要求1或2所述的控制网络上传速度的方法,其特征在于,获取进程的输入输出请求包,并将所述输入输出请求包放入队列的步骤之后还包括 将所述输入输出请求包以限速值为粒度拆分成多个子输入输出请求包; 从所述队列中提取输入输出请求包,并按照所述空闲流量进行发送的步骤为从所述队列中提取子输入输出请求包,并按照所述空闲流量发送所述子输入输出请求包。
5.根据权利要求1或2所述的控制网络上传速度的方法,其特征在于,从所述队列中提取输入输出请求包的步骤之后,还包括步骤 获取所述输入输出请求包的长度,判断所述输入输出请求包的长度是否大于所述空闲流量值,若是,则将所述输入输出请求包以空闲流量值为粒度进行拆分,并按照空闲流量值发送所述拆分后的输入输出请求包,若否,则直接按照空闲流量值发送所述输入输出请求包。
6.—种控制网络上传速度的系统,其特征在于,包括 获取模块,用于获取进程的输入输出请求包,并将所述输入输出请求包放入队列,其中,所述进程预设有限速值; 统计模块,用于统计所述进程当前的发送流量值,并根据所述限速值及统计的发送流量值计算进程当前的空闲流量值; 发送模块,用于从所述队列中提取输入输出请求包,并按照所述空闲流量值发送所述输入输出请求包。
7.根据权利要求6所述的控制网络上传速度的系统,其特征在于,还包括创建模块,所述创建模块用于建立传输驱动接口层的过滤驱动。
8.根据权利要求7所述的控制网络上传速度的系统,其特征在于,还包括设置模块,所述设置模块用于对每个进程分别设定限速值,所述创建模块还用于对每个进程创建相应的队列;所述获取模块还用于获取每个进程的输入输出请求包,并将输入输出请求包放入相应的队列中。
9.根据权利要求6至8中任一项所述的控制网络上传速度的系统,其特征在于,还包括拆分模块,所述拆分模块用于将所述输入输出请求包以限速值为粒度拆分成多个子输入输出请求包;所述发送模块还用于从所述队列中提取子输入输出请求包,并按照所述空闲流量发送所述子输入输出请求包。
10.根据权利要求6所述的控制网络上传速度的系统,其特征在于,还包括判断模块和拆分模块,所述获取模块还用于在所述发送模块从所述队列中提取出输入输出请求包后,获取所述输入输出请求包的长度;所述判断模块用于判断所述输入输出请求包的长度是否大于所述空闲流量值;所述拆分模块用于在所述输入输出请求包的长度大于所述空闲流量值时,将所述输入输出请求包以空闲流量值为粒度进行拆分,所述发送模块还用于按照空闲流量值发送所述拆分后的输入输出请求包;所述发送模块还用于在所述输入输出请求包的长度不大于所述空闲流量值时,直接按照空闲流量值发送所述输入输出请求包。
全文摘要
本发明涉及一种控制网络上传速度的方法及系统。该方法包括以下步骤获取进程的输入输出请求包,并将所述输入输出请求包放入队列,其中,所述进程预设有限速值;统计所述进程当前的发送流量值,并根据所述限速值及统计的发送流量值计算进程当前的空闲流量值;从所述队列中提取输入输出请求包,并按照所述空闲流量值发送所述输入输出请求包。上述控制网络上传速度的方法及系统,采用设定限速值,统计当前的发送流量值,计算出当前的空闲流量值,按照该空闲流量值发送输入输出请求包,不需延时发送,提高了网络连接的稳定。
文档编号H04L12/861GK103036804SQ20111030170
公开日2013年4月10日 申请日期2011年10月8日 优先权日2011年10月8日
发明者谢飞 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1