文件传输方法、装置、计算机可读存储介质及计算机设备与流程

文档序号:18179742发布日期:2019-07-17 05:08阅读:165来源:国知局
文件传输方法、装置、计算机可读存储介质及计算机设备与流程

本申请涉及计算机技术领域,特别是涉及一种文件传输方法、装置、计算机可读存储介质和计算机设备。



背景技术:

随着互联网的飞速发展,用户通过互联网互相传输文件,分享文件也越来越频繁。但在传输文件时,若传输的文件较大则会占用网络带宽,造成网络卡顿等问题。

传统技术中,解决文件传输的问题采用的是p2p(peertopeer,点对点技术)加速传输技术,指使用了类似bittorrent(比特流)、emule(电骡)等p2p文件分享传输协议来加速文件传输的软件使用的技术。p2p技术通常使用一个tracker服务器(bittorrent服务器称为tracker)来存储网络中该文件传输软件的各个用户持有的文件的摘要信息。文件接收方在从文件的源地址下载文件的同时,还会通过向tracker服务器根据文件的摘要信息查找出持有该文件的用户,并向该用户请求文件,以达到加速下载的目的。

然而,这种p2p加速传输技术的缺点在于,不能实现文件接收方和发送方之间的精准加速,在加速过程中,也无端占用了非接收方用户的网络带宽和计算机的运算能力,造成了服务器带宽资源的浪费。



技术实现要素:

基于此,有必要针对带宽资源浪费的技术问题,提供一种文件传输方法、装置、计算机可读存储介质和计算机设备。

一种文件传输方法,所述方法包括:

第二终端获取所述第一终端发送的会话消息,所述会话消息中携带有所述第一终端发送的文件对应的文件标识;

所述第二终端触发所述会话消息,产生文件传输请求,所述文件传输请求用于从服务器请求传输所述文件标识对应的文件;

当所述第二终端检测到与所述第一终端之间具有直连传输通道时,则通过所述服务器提供的多路离线传输通道及所述直连传输通道传输所述文件标识对应的文件。

一种文件传输方法,所述方法包括:

接收第一终端向第二终端发送的文件并保存;

接收第二终端文件传输请求,根据所述文件传输请求建立与所述第二终端之间的多路离线传输通道,所述多路离线传输通道用于当所述第一终端和第二终端之间具有直连传输通道时,与所述直连传输通道共同传输所述文件至至所述第二终端。

一种文件传输装置,所述装置包括:

会话消息获取模块,用于第二终端获取所述第一终端发送的会话消息,所述会话消息中携带有所述第一终端发送的文件对应的文件标识;

传输请求产生模块,用于所述第二终端触发所述会话消息,产生文件传输请求,所述文件传输请求用于从服务器请求传输所述文件标识对应的文件;

文件传输模块,用于当所述第二终端检测到与所述第一终端之间具有直连传输通道时,则通过所述服务器提供的多路离线传输通道及所述直连传输通道传输所述文件标识对应的文件。

一种文件传输装置,所述装置包括:

保存模块,用于接收第一终端向第二终端发送的文件并保存;

传输模块,用于接收第二终端文件传输请求,根据所述文件传输请求建立与所述第二终端之间的多路离线传输通道,所述多路离线传输通道用于当所述第一终端和第二终端之间具有直连传输通道时,与所述直连传输通道共同传输所述文件至至所述第二终端。

一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

第二终端获取所述第一终端发送的会话消息,所述会话消息中携带有所述第一终端发送的文件对应的文件标识;

所述第二终端触发所述会话消息,产生文件传输请求,所述文件传输请求用于从服务器请求传输所述文件标识对应的文件;

当所述第二终端检测到与所述第一终端之间具有直连传输通道时,则通过所述服务器提供的多路离线传输通道及所述直连传输通道传输所述文件标识对应的文件。

一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

接收第一终端向第二终端发送的文件并保存;

接收第二终端文件传输请求,根据所述文件传输请求建立与所述第二终端之间的多路离线传输通道,所述多路离线传输通道用于当所述第一终端和第二终端之间具有直连传输通道时,与所述直连传输通道共同传输所述文件至至所述第二终端。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

第二终端获取所述第一终端发送的会话消息,所述会话消息中携带有所述第一终端发送的文件对应的文件标识;

所述第二终端触发所述会话消息,产生文件传输请求,所述文件传输请求用于从服务器请求传输所述文件标识对应的文件;

当所述第二终端检测到与所述第一终端之间具有直连传输通道时,则通过所述服务器提供的多路离线传输通道及所述直连传输通道传输所述文件标识对应的文件。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

接收第一终端向第二终端发送的文件并保存;

接收第二终端文件传输请求,根据所述文件传输请求建立与所述第二终端之间的多路离线传输通道,所述多路离线传输通道用于当所述第一终端和第二终端之间具有直连传输通道时,与所述直连传输通道共同传输所述文件至至所述第二终端。

上述文件传输方法、装置、计算机可读存储介质及计算机设备,通过第二终端获取第一终端发送的会话消息,会话消息中携带有第一终端发送的文件对应的文件标识;第二终端触发会话消息,产生文件传输请求,文件传输请求用于从服务器请求传输文件标识对应的文件;当第二终端检测到与第一终端之间具有直连传输通道时,则通过服务器提供的多路离线传输通道及直连传输通道传输文件标识对应的文件。通过这种方式,使得在通过服务器提供的多路离线传输通道传输文件的同时,还能够通过终端之间的直连传输通道传输该文件,有效的利用了直连传输通道的资源,大幅度的提高了文件传输的速率,还能够有效的减少对服务器带宽资源的占用,节约文件传输需耗费的流量。

附图说明

图1为一个实施例中文件传输方法的应用环境图;

图2a为一个实施例中计算机设备的结构框图;

图2b为另一个实施例中计算机设备的结构框图;

图3为一个实施例中文件传输方法的流程示意图;

图4为一个实施例中第二终端通过多路离线传输通道及直连传输通道传输文件时的流程示意图;

图5为另一个实施例中文件传输方法的流程示意图;

图6为一个实施例中文件传输时的时序图;

图7为一个实施例中文件传输流向示意图;

图8a为一个实施例中传输函数的函数图像示意图一;

图8b为一个实施例中传输函数的函数图像示意图二;

图9a为另一个实施例中传输函数的函数图像示意图一;

图9b为另一个实施例中传输函数的函数图像示意图二;

图10为一个实施例中以特定的即时通信应用作为应用场景的界面示意图;

图11为另一个实施例中文件传输方法的流程示意图;

图12为一个实施例中文件传输装置的结构框图;

图13为另一个实施例中文件传输装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1示出了一个实施例中文件传输方法的应用环境图。参照图1,该文件传输方法可应用于文件传输系统中,该系统包括终端110a、终端110b和服务器120,服务器120中包含有离线文件服务器,终端110a和终端110b通过网络与服务器120连接。终端110a和终端110b可以是但不限于各种能运行文件传输方法的个人计算机、笔记本电脑、个人数字助理、智能手机、平板电脑和便携式可穿戴设备等。服务器120可以是实现单一功能的服务器,也可以是实现多种功能的服务器,具体可以是独立的物理服务器,也可以是物理服务器集群。具体地,终端110a通过特定的应用向终端110b发送离线文件时,终端110a先通过网络将文件上传至服务器120中的离线文件服务器,服务器120再向终端110b发送一条携带有文件对应的文件标识的会话消息。终端110b触发该会话消息产生文件传输请求后,离线文件服务器将与文件标识对应的文件传输至终端110b,即终端110b从服务器120中的离线文件服务器下载该文件。

图2a示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110a、终端110b。如图2a所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现下述图3至图10中的文件传输方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行下述图3至图10中的文件传输方法。终端110a和终端110b通过网络接口与服务器120进行网络通信,比如终端110a向服务器120发起向终端110b发送文件的请求。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。输入装置可获取用户触发的发送文件的请求或文件传输请求。显示屏可用于显示特定应用界面,比如显示文件传输的下载界面。

图2b示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图2b所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现下述图11中的文件传输方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行文件传输方法。终端110a和终端110b通过网络接口与服务器120进行网络通信,比如通过网络接口接收终端110a向终端110b发送的文件并保存。

本领域技术人员可以理解,图2a和图2b中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图3所示,在一个实施例中,提供了一种文件传输方法,该方法以应用于如图1和图2中所示的终端中进行举例说明。包括:

步骤302,第二终端获取第一终端发送的会话消息,会话消息中携带有第一终端发送的文件对应的文件标识。

在第一终端和第二终端上,都装有特定的应用,可用于文件传输,文件传输一般分为在线传输和离线传输两种。在线传输是指第一终端在将文件发送至第二终端时,第二终端在同意接收文件后,可立即接收到第一终端发送的文件。而离线传输则是在第二终端无需立即同意传输的情况下,第一终端也可先将文件上传到服务器上保存下来,当第二终端需要下载的时候,可再从服务器上下载该文件。

当第一终端通过离线传输方式向第二终端发送文件时,会先将文件上传至服务器,也可认为是将此文件保存至服务器中的离线文件服务器。服务器将此文件保存成功后,会生成与此文件对应的文件标识,文件标识一般是唯一的。然后第一终端会再向第二终端发送一条包含此文件对应的文件标识的会话消息,第二终端收到此这条会话消息后,代表第一终端已经成功将文件上传至服务器并保存,第二终端需要时可从服务器下载此文件。

步骤304,第二终端触发会话消息,产生文件传输请求,文件传输请求用于从服务器请求传输文件标识对应的文件。

第二终端在收到第一终端发送的与文件相关的会话消息后,可通过触发此会话消息产生对应的文件传输请求,当文件传输请求向服务器成功发送后,可启动传输操作,也可以理解为是下载操作。服务器在获取到第二终端的文件传输请求后,会根据文件传输请求中携带的文件标识从数据库中查找与此文件标识对应的文件。

步骤306,当第二终端检测到与第一终端之间具有直连传输通道时,则通过服务器提供的多路离线传输通道及直连传输通道传输文件标识对应的文件。

传输通道,指文件数据传输的途径。直连传输通道则指终端与终端之间无需通过服务器的中转,而是相互之间直接建立起的文件数据传输途径。第二终端通过触发会话消息从服务器上下载文件时,实际上是通过服务器提供的多路离线传输通道下载该文件。

但当第二终端检测到与第一终端之间具有直连传输通道时,那么第二终端则可以通过多路离线传输通道从服务器下载该文件,同时还可以通过直连传输通道从第一终端下载该文件,即当第二终端检测到与第一终端之间具有直连传输通道时,第二终端可以同时通过服务器提供的多路离线传输通道及直连传输通道下载该文件。一般情况下,需要第一终端与第二终端均保持在线状态时,才认为第一终端与第二终端之间具有直连传输通道,但也可以设计成,即便第一终端处于离线状态,但只要第一终端与第二终端之间具有直连传输通道,第二终端也可以同时通过多路离线传输通道与直连传输通道下载文件。在线状态指的是第一终端与第二终端通过特定应用传输文件时,是否成功登录了此特定应用,使得第一终端与第二终端登录的应用账号处于在线状态。

通过这种方式,使得在通过服务器提供的多路离线传输通道下载文件的同时,还能够通过终端之间的直连传输通道下载该文件,有效的利用了直连传输通道的资源,大幅度的提高了文件传输的速率,还能够有效的减少对服务器带宽资源的占用,节约文件传输需耗费的流量。

在一个实施例中,会话消息中还携带有第一终端的局域网地址;当第二终端根据第一终端的局域网地址检测到与第一终端处于同一局域网中时,则第二终端与第一终端之间具有直连传输通道。

局域网(localareanetwork,lan)是指在一个局部的地理范围内,将各种计算机、外部设备和数据库等互相联接起来组成的计算机通信网。它可以通过数据通信网或专用数据电路,与远方的局域网、数据库或处理中心相连接,构成一个较大范围的信息处理系统。局域网可以实现文件管理、应用软件共享、打印机共享、扫描仪共享、工作组内的日程安排、电子邮件和传真通信服务等功能。

第一终端给第二终端发送离线文件时,会先将文件上传至服务器保存,保存后,第一终端会发送一条会话消息至第二终端,这条会话消息中除了携带有文件标识外,还携带有第一终端的局域网地址。第二终端在触发会话消息后,可根据会话消息中携带的第一终端的局域网地址检测第二终端的局域网地址和第一终端的局域网地址是否处于同一局域网中。如果第一终端与第二终端处于同一局域网中,那么第一终端与第二终端之间则存在基于局域网的直连传输通道,即局域网传输通道,那么第二终端可以同时通过服务器提供的多路离线传输通道及局域网传输通道下载该文件。有效的利用了局域网传输通道的资源,减少了对服务器带宽资源的占用,从而节约了文件传输需耗费的流量。

在一个实施例中,会话消息中还携带有第一终端的蓝牙标识;当第二终端根据第一终端的蓝牙标识检测到与第一终端通过蓝牙连接时,则第二终端与第一终端之间具有直连传输通道。

蓝牙是一种短距离的无线通讯技术,电子装置彼此可以透过蓝牙而连接起来,省去了传统的电线。透过芯片上的无线接收器,配有蓝牙技术的电子产品能够在一定的距离内彼此相通,传输速度可以达到每秒钟1兆字节。

第二终端收到第一终端发送的会话消息中,不仅携带了文件标识,还携带有第一终端的蓝牙标识。蓝牙标识对应蓝牙设备,第二终端在触发会话消息后,可根据第一终端的蓝牙标识在第二终端的蓝牙配对列表里查找是否有对应连接成功的蓝牙设备。当检测到蓝牙配对列表里连接成功的蓝牙设备与第一终端的蓝牙标识对应成功后,则说明第一终端与第二终端已成功通过蓝牙连接,那么第一终端与第二终端之间具有直连传输通道,即蓝牙传输通道。则第二终端可以同时通过服务器提供的多路离线传输通道及蓝牙传输通道下载该文件。一般情况下,蓝牙连接后,数据传输可随时在主设备和其他设备之间进行,因此利用蓝牙传输通道也可有效的减少对服务器带宽资源的占用,提升对文件传输的速率。

在一个实施例中,当第二终端检测到与第一终端通过物理连接方式连接时,则第二终端与第一终端之间具有直连传输通道。

物理连接方式连接,指比如通过网线、数据线等物理方式连接的方式。当第二终端在触发会话消息时,可以检测第二终端与第一终端之间是否通过物理连接方式连接,当有,则说明第二终端与第一终端之间存在有直连传输通道,即由物理连接方式连接成功构成的物理传输通道。那么第二终端可以同时通过服务器提供的多路离线传输通道及物理传输通道传输该文件,即下载该文件。直接通过物理连接方式传输文件,无需耗费流量,因此将物理传输通道与离线下载通道共同传输文件,大幅度的提高了文件传输的速率,也减少了对流量的耗费,节约流量成本。

在一个实施例中,如图4所示,通过服务器提供的多路离线传输通道及直连传输通道传输文件标识对应的文件,包括:

步骤402,获取为多路离线传输通道中包含的每个离线下载器分配的对应的文件分片区间以及每个离线下载器对应的文件分片区间的传输速度。

下载器,是指在某个传输通道上下载文件的程序模块,通常可以控制下载的开始、暂停以及下载的文件范围等。在服务器提供的多路离线传输通道中就包含有多个下载器,因此当终端通过多路离线传输通道下载文件时,实际上是通过多路离线传输通道中的多个离线下载器下载该文件。而在多个离线下载器同时下载一个文件时,实际上会将这一个文件分成多个文件分片区间,然后每个离线下载器对应一个分片区间,当所有离线下载器都各自完成了文件分片区间的下载后,则代表整个文件下载完成。

每个离线下载器在下载各自对应的文件分片区间时,都会有对应的传输速度,各个下载器的传输速度会存在差异。有的下载器速度更快,而有的下载器由于分配的文件分片区间较大导致传输速度较慢,也可能由于网络延迟导致有的下载器下载异常。总之,每个下载器都有各自分配的文件分片区间以及对应的文件分片区间传输速度。

步骤404,将离线下载器按照每个离线下载器分配的对应的文件分片区间的顺序进行排列。

将每个离线下载器分配的文件分片区间组合即构成了完整的文件。在实际运用中,为了保证文件的完整性,下载器分配的文件分片区间会有部分区间重叠,因此需要将每个离线下载器分配的对应的文件分片区间排序,按照文件原本的顺序排序后则可组成完整的文件。比如,将文件a分成10个文件分片区间,分配给3个下载器b1,b2及b3,其中下载器b1分配了文件分片区间1-5,下载器b2分配了文件分片区间3-8,下载器b3分配了文件分片区间7-10。可看出,下载器分配的文件分片区间存在有重叠的文件分片区间。此时,则需要将下载器进行排列,排列后b1和b2以及b2和b3之间的重复部分会被覆盖,依次排列后即可得到完整的文件。

步骤406,根据排列后的每个离线下载器分配的对应的文件分片区间以及对文件分片区间的传输速度计算得到传输函数。

每个离线下载器分配有对应的文件分片区间,文件分片区间都有大小,在获取到每个离线下载器下载分配的文件分片区间时的传输速度后,则可以得到每个离线下载器下载文件分片区间时对应的传输函数。比如,下载器b1分配了文件分片区间1-5,总大小为4m,而下载器b1的传输速度为2m/s,那么可得到下载器b1下载该文件分片区间时,需耗费的时间与文件分片区间对应的传输函数为:下载时间=1/2*文件分片区间。通过这种方式,可得到每个离线下载器下载各自对应的文件分片区间时,需耗费的时间与文件分片区间对应的传输函数。

再将全部离线下载器的传输函数汇总,并按照离线下载器分配的文件分片区间依次将离线下载器排列,则可得到一个总的传输函数,即得到通过多路离线传输通道下载该文件的传输函数。

步骤408,根据传输函数获取最大时间点所在的离线下载器对应的文件分片区间。

在得到通过多路离线传输通道下载该文件的传输函数后,可根据此传输函数得到最大时间点,最大时间点决定了在通过多路离线传输通道下载该文件时,最终需耗费的时间。因此可根据传输函数中最大时间点可找到对应的下载器,再根据对应的下载器可得到该下载器分配的对应的文件分片区间。

步骤410,通过直连传输通道与多路离线传输通道传输与最大时间点对应的文件分片区间。

由于最大时间点决定了在通过多路离线传输通道传输该文件时最终需耗费的时间,因此当根据最大时间点查找到对应的文件分片区间后,为了减少传输需耗费的时间,则需要对最大时间点查找到对应的文件分片区间进行再次分配,使用新加入的直连传输通道与之前分配的离线下载器共同传输此最大时间点查找到对应的文件分片区间,对最大时间点对应的文件分片区间的再次分配直接有效的减少了对整个文件的传输时间,提高了文件传输的速率。

在一个实施例中,通过直连传输通道与多路离线传输通道传输与最大时间点对应的文件分片区间,包括:获取对直连传输通道的预设传输速度值;获取最大时间点所在的离线下载器的传输速度;根据直连通道的预设传输速度值与最大时间点所在的离线下载器的传输速度计算得到传输速度比例;通过传输速度比例分别从直连传输通道及最大时间点所在的离线下载器获取与最大时间点对应的文件分片区间。

直连传输通道的预设传输速度值可获取到之前使用的下载通道的历史速度,若没有历史速度,则可以将直连传输通道的预设传输速度值根据经验设定。当根据多路离线传输通道传输该文件的传输函数得到最大时间点后,可查找到与该最大时间点对应的离线下载器。而每个离线下载器都有对应的传输速度,因此可根据直连传输通道的预设传输速度值与该最大时间点所在的离线下载器的传输速度计算得到传输速度比例。再根据传输速度比例将与最大时间点对应的文件分片区间分配给直连传输通道对应的下载器以及该最大时间点所在的离线下载器。

根据传输速度分配文件分片区间,而不是直接平均分配,可以最大化利用下载器的资源,使得离线下载通道与直连通道的合作传输文件的速率能够大幅度提升,减少传输时间,节约文件传输的时间成本。

在一个实施例中,如图5所示,提供了一种文件传输方法,该方法以应用于如图1和图2中所示的终端中进行举例说明。方法包括:

步骤502,第二终端获取第一终端发送的与传输文件对应的会话消息。

当第一终端发送离线文件至第二终端时,第一终端会先将文件上传至服务器保存,也可称为将文件上传至离线文件服务器保存。但为了避免文件重复上传,可在文件上传之前,对文件的内容进行md5算法计算得到对应的md5值,即文件的一种哈希值(hash)。由于md5值是根据文件的内容计算得到的,因此同样内容的文件的md5值是一样的,那么在文件上传至离线文件服务器之前,可根据文件的md5值从离线文件服务器查找是否有一致的md5值,如果有,则说明离线文件服务器上已经存储有此文件了,那么无需再次上传,可以直接实现“秒传”;如果没有,则说明离线文件服务器上并没有此文件,文件需要上传,则正常启动上传操作。

在文件上传至离线文件服务器后,离线文件服务器会为每次的文件提供一个文件标识(uuid),离线文件服务器可根据文件标识查找对应的文件。需理解的是,并不是同一个文件的uuid是一样的,而是根据每一次上传分配一个uuid,因此uuid是唯一的。比如,当终端a向终端b发送离线文件q时,如果根据文件q的md5值查询到离线文件服务器上已经存储有文件q,那么文件q则可实现“秒传”,这时离线文件服务器仍然会为本次的文件q提供一个新的uuid;如果根据文件q的md5值查询到离线文件服务器上未存储有文件q,则文件q需上传,上传后离线文件服务器为文件q提供唯一的uuid,然后第一终端再发送一条携带有本次文件q的uuid的会话消息至第二终端。因此,多次发送相同内容的文件,也会算作不同的离线文件,它们的uuid是不同的,但相同内容的文件的md5值是相同的。

另外,在第一终端发送了离线文件至第二终端后,可将此文件加入到第一终端的加速队列中。加速队列是发送方维护的一个列表,当发送方了发送一个离线文件之后,会将这个离线文件的相关信息(例如这个文件在终端中的路径,离线文件uuid等等)添加到这个列表中。当接收方的第二终端与第一终端之间具有直连传输通道时,可通过加速队列中取出相关信息,从而从第一终端直接获取文件。

如图6所示的时序图,发送方首先会触发发送的操作,然后读取文件,通过文件内容计算得到文件的md5值,再向离线文件服务器发送携带有md5值的上传文件的请求。离线文件服务器获取到md5值后,将根据md5值查找是否之前有用户上传过相同内容的文件,即离线文件服务器上是否存储有与此md5值相同的文件。如没有,则返回“文件不存在”的通知至发送方,发送方即可开始上传文件,文件上传成功后再返回文件对应的uuid至发送方;如有,则直接返回文件对应的uuid至发送方。然后发送方发送一条携带有文件对应的uuid的会话消息至接收方,同时发送方再将文件加入加速队列中,以便接收方后续下载时用到。

步骤504,第二终端触发会话消息,下载文件。

第二终端在收到第一终端发送的与传输文件对应的会话消息后,可通过触发会话消息产生文件传输请求,从而开始下载文件。此会话消息中携带有文件标识,即uuid,当第二终端触发会话消息产生文件传输请求并发送至服务器时,即发送至离线文件服务器时,离线文件服务器会根据文件传输请求中携带的文件uuid查找是否有对应的文件。离线文件服务器可设置有文件过期时间,比如设置文件的有效期为7天,当第二终端超过了7天才开始下载该文件时,那么离线文件服务器已自动将该文件删除,那么离线文件服务器上则不会存储有与文件uuid对应的文件,第二终端也无法再下载该文件。如查找到了对应的文件,则第二终端可以通过离线文件服务器提供的多路离线传输通道下载该文件。

步骤506,第二终端检测是否与第一终端之间具有直连传输通道,若是,则执行步骤508;若否,则执行步骤510。

直连传输通道指终端与终端之间无需通过路由器或服务器的中转,而是相互之间直接建立起的文件数据传输途径。在第一终端与第二终端之间,具有直连传输通道至少有以下三种情况:

情况一:第一终端与第二终端位于同一个局域网中。

第二终端可以通过会话消息中携带的第一终端的局域网地址,检测是否与第一终端位于同一个局域网中,若是,那么第一终端与第二终端之间则存在基于局域网的直连传输通道,即局域网传输通道。

情况二:第一终端与第二终端通过蓝牙连接。

第二终端可以通过会话消息中携带的第一终端的蓝牙标识,检测是否与第一终端通过蓝牙连接。第二终端可根据第一终端的蓝牙标识与已经连接的蓝牙设备进行匹配,当已经连接的蓝牙设备对应的蓝牙标识与第一终端的蓝牙标识一致时,则说明第二终端已经与第一终端通过蓝牙连接成功。那么第一终端与第二终端之间则存在基于蓝牙的直连传输通道,即蓝牙传输通道。

情况三:第一终端与第二终端与通过物理方式连接。

两个终端之间可通过数据线、网线等物理方式连接。当连接成功后,两个终端之间则存在有基于物理方式连接产生的传输通道,即物理传输通道。

在以上三种情况中,任意满足一种均可以认为第一终端与第二终端之间具有直连传输通道,但一般实际运用过程中,会考虑再加上第一终端是否在线的条件,即需要当第一终端也处于在线状态时,第二终端才可同时通过多路离线传输通道与第一终端之间存在的直连传输通道下载文件。但这个条件是否需要存在则由开发人员或产品的设计而定,因为若是第一终端处于离线状态时第二终端也能通过直连传输通道下载文件,会占用第一终端的内存等,会消耗第一终端的资源。但若是实际需求需要设计为更灵活,也可设计成第一终端处于离线状态,即第一终端不在线,第二终端也可通过直连传输通道下载文件。此处的在线状态指的是第一终端与第二终端通过特定应用传输文件时,是否成功登录了此特定应用,使得第一终端与第二终端登录的应用账号处于在线状态,比如当第一终端与第二终端是通过特定的某个即时通信应用进行文件传输时,那么第一终端在线则指第一终端成功登录了该即时通信应用。

步骤508,第二终端通过多路离线传输通道及直连传输通道下载文件。

如图7所示的文件传输流向示意图,当第一终端与第二终端之间至少存在有上述三种情况中的一种直连传输通道时,第二终端在下载文件时可以通过的多路离线传输通道和直连传输通道同时下载该文件。通过多路离线传输通道下载文件时是从离线文件服务器上下载,而通过直连传输通道从第一终端下载文件时,则可根据文件标识(uuid)从第一终端的加速队列中取出相关信息,从而下载对应的文件。

在下载时,由于是通过两个通道下载同一个文件,则存在文件分配的问题。从逻辑上理解,可将一个文件看作成多个文件分片区间组成的,那么在通过通道下载文件时,实际上是每个通道下载一部分文件分片区间,当通道将各自分配的文件分片区间均下载完毕时,则为多个通道共同完成了文件的下载。

离线文件服务器提供的多路离线传输通道中包含了多个离线下载器,因此当通过多路离线传输通道下载文件时,实际上是多个离线下载器在下载各个分配的文件分片区间,对于直连传输通道而言,也是如此。但由于直连传输通道一般情况下并不是多路下载的,可能只包含有一个下载器,因此可直接认为直连传输通道对应一个直连下载器。然而,网络环境复杂多变,不同的下载通道的传输速度不同,即多路离线传输通道与直连传输通道的传输速度会有差异,因此在将文件对应的多个文件分片区间分配给多路离线传输通道与直连传输通道,即将文件对应的多个文件分片区间分配给多个离线下载器和直连下载器时,若是简单的将多个文件分片区间进行平均分配,那显然不是一个最优解。

如图8a所示,为了便于理解可以引入一个t(n)函数。其中设定下载文件的大小为20mb(计算机中的一种储存单位,读作“兆”),自变量n表示第n个文件分片区间,t(n)表示第n个文件分片区间被下载完成的时间,那么t(n)的max值则表示整个文件被真正下载完成时需耗费的时间。因为必须全部文件分片区间均被下载完毕,才可认为文件是被真正下载完毕的,因此耗时最大的文件分片区间决定了下载整个文件时需耗费的时间。下载器的数量、下载器分配的文件分片区间以及下载器的速度等决定了t(n)函数完成下载文件的图像。假设仅通过多路离线传输通道下载文件,且下载器的速度均稳定在1mb/s,那么t(n)函数的图像则如图8a所示。

此时,再将直连传输通道的直连下载器加入到下载队列中,假设直连下载器的传输速度稳定在3mb/s,也将文件分片区间平均分配到多个离线下载器和直连下载器,则会得到如图8b所示的t(n)函数。显然,从图8b中可看出,下载时间并未得到很好的优化效果。因此,提出将文件分片区间按照下载器的传输速度比例分配的策略。将最大时间点对应的文件分片区间进行重新分配,按照最大时间点对应的离线下载器与新加入的直连下载器的传输速度比例进行分配。

具体地,如图9a所示,假设多路离线传输通道中包含有两个离线下载器,传输速度分别为2mb/s和3mb/s。此时新加入的直连传输通道对应的直连下载器的传输速度为2mb/s,那么在将最大时间点对应的文件分片区间进行重新分配后,传输函数的图像则由图9a变成了图9b,可明显看出下载时间明显缩短,整体传输速度加快。

步骤510,第二终端通过多路离线传输通道下载文件。

当第二终端与第一终端之间不具有直连传输通道时,则第二终端只会通过离线文件服务器提供的多路离线传输通道下载该文件。

在确认第二终端是否完整下载了该文件时,可将第二终端下载的文件对应的md5值与离线文件服务器上存储的对应文件的md5值进行对比,当两者相同时,则代表第二终端已完整下载了该文件。采取同时通过服务器提供的多路离线传输通道及局域网传输通道下载该文件的方式,有效的利用了局域网传输通道的资源,减少了对服务器带宽资源的占用,从而节约了文件传输需耗费的流量。

本发明实施例所提供的文件传输方法适用于特定的即时通信应用中。以特定的即时通信应用作为应用场景进行举例说明。通过此特定的即时通信应用可发起在线文件传输业务或者离线文件传输业务,在线文件传输业务是指在线传输是指第一终端在将文件发送至第二终端时,第二终端在同意接受文件后,可立即接收到第一终端发送的文件。而离线文件传输业务则是指文件的发送方先将文件上传至离线文件服务器,然后将该文件在离线文件服务器上对应的文件标识发送给文件的接收方。接收方根据该文件标识从离线文件服务器下载该文件的文件传输方式。

如图10所示,当发送方与接收方之间具有直连传输通道时,在接收方的应用界面上会显示“接受加速”的提示,当接受方点击了“接受加速”的提示选项后,则说明接收方开启了直连传输通道的加速模式,接收方即可同时通过多路离线传输通道及直连传输通道下载该文件。在接收方的应用界面上也会显示“双方在同一网络上为您提速:3mb/s”等提示用语。文件的接收方可以不只有一个。例如发送方将文件发送至讨论组或者群,那么讨论组和群内的用户都可以是接收方。

在一个实施例中,如图11所示,还提供了一种文件传输方法,该方法以应用于如图1和图2中所示的终端中进行举例说明。该方法包括:

步骤1102,接收第一终端向第二终端发送的文件并保存。

第一终端向第二终端发送离线文件时,会先将文件上传至服务器保存,即将文件上传至离线文件服务器。离线文件服务器接收到第一终端向第二终端发送的文件后,会先将文件保存起来,再为该文件生成唯一的文件标识,文件标识与文件一一对应。但在保存之前,离线文件服务器实际上会先获取这个文件的md5值,再查找离线文件服务器上是否存储有与md5值相同的文件,如有,则不需要再次将此文件上传,而是可实现“秒传”,再生成一个唯一的对应文件标识即可。然后第一终端会向第二终端发送一条携带有文件标识的会话消息。

步骤1104,接收第二终端发起的文件传输请求,根据文件传输请求建立与第二终端之间的多路离线传输通道,多路离线传输通道用于当第一终端和第二终端之间具有直连传输通道时,与直连传输通道共同传输文件至至第二终端。

第二终端在接收到第一终端发送的携带有文件标识的会话消息后,可触发会话消息产生对应的文件传输请求。当接收到第二终端发起的文件传输请求后,离线文件服务器则根据文件传输请求中携带的文件标识查找与文件标识对应的文件,并通过多路离线传输通道将该文件传输至第二终端。当第一终端与第二终端之间具有直连传输通道时,则通过多路离线传输通道与直连传输通道将文件共同传输至第二终端。

通过这种方式,使得在通过服务器提供的多路离线传输通道传输文件的同时,还能够通过终端之间的直连传输通道传输该文件,有效的利用了直连传输通道的资源,大幅度的提高了文件传输的速率,还能够有效的减少对服务器带宽资源的占用,节约文件传输需耗费的流量。

在一个实施例中,直连传输通道包括第一终端与第二终端之间的局域网传输通道、蓝牙传输通道和物理连接传输通道中的至少一种。

直连传输通道指终端与终端之间无需通过路由器或服务器的中转,而是相互之间直接建立起的文件数据传输途径。当第一终端与第二终端之间满足以下三种情况中的任意一种时,都说明第一终端与第二终端之间具有直连传输通道:

1、第一终端向第二终端发送离线文件时,会先将文件上传至离线文件服务器,当上传成功后,会将携带有该文件对应的文件标识的会话消息发送至第二终端。该会话消息中还携带有第一终端的局域网地址,当第二终端通过会话消息中携带的第一终端的局域网地址检测到与第一终端位于同一个局域网中时,那么第一终端与第二终端之间则存在基于局域网的直连传输通道,即局域网传输通道。

2、第二终端通过会话消息中携带的第一终端的蓝牙标识检测到与第一终端通过蓝牙连接时,则说明第一终端与第二终端之间存在基于蓝牙的直连传输通道,即蓝牙传输通道。

3、第一终端与第二终端之间通过数据线、网线等物理方式连接成功时,则第一终端与第二终端之间存在有基于物理方式连接产生的传输通道,即物理传输通道。

有效的利用各种可能是直连传输通道的情况,结合离线下载通道共同传输文件,能大幅度的提高了文件传输的速率,还能够有效的减少对服务器带宽资源的占用,节约文件传输需耗费的流量。

如图12所示,在一个实施例中,还提供了一种文件传输装置,该装置包括:

会话消息获取模块1202,用于第二终端获取第一终端发送的会话消息,会话消息中携带有第一终端发送的文件对应的文件标识。

传输请求产生模块1204,用于第二终端触发会话消息,产生文件传输请求,文件传输请求用于从服务器请求传输文件标识对应的文件。

文件传输模块1206,用于当第二终端检测到与第一终端之间具有直连传输通道时,则通过服务器提供的多路离线传输通道及直连传输通道传输文件标识对应的文件。

在一个实施例中,上述会话消息获取模块1202获取到的会话消息中还携带有第一终端的局域网地址。上述装置还包括直连传输通道检测模块(图中未示出),用于当第二终端根据第一终端的局域网地址检测到与第一终端处于同一局域网中时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,上述会话消息获取模块1202获取到的会话消息中还携带有第一终端的蓝牙标识。上述直连传输通道检测模块还用于,当第二终端根据第一终端的蓝牙标识检测到与第一终端通过蓝牙连接时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,上述直连传输通道检测模块还用于,当第二终端检测到与第一终端通过物理连接方式连接时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,上述文件传输模块1206还用于,获取为多路离线传输通道中包含的每个离线下载器分配的对应的文件分片区间以及每个离线下载器对对应的文件分片区间的传输速度;将离线下载器按照每个离线下载器分配的对应的文件分片区间的顺序进行排列;根据排列后的每个离线下载器分配的对应的文件分片区间以及对文件分片区间的传输速度计算得到传输函数;根据传输函数获取最大时间点所在的离线下载器对应的文件分片区间;通过直连传输通道与多路离线传输通道下载与最大时间点对应的文件分片区间。

在一个实施例中,上述文件传输模块1206还用于,获取对直连传输通道的预设传输速度值;获取最大时间点所在的离线下载器的传输速度;根据直连通道的预设传输速度值与最大时间点所在的离线下载器的传输速度计算得到传输速度比例;通过传输速度比例分别从直连传输通道及最大时间点所在的离线下载器获取与最大时间点对应的文件分片区间。

如图13所示,在一个实施例中,还提供了一种文件传输装置,该装置包括:

保存模块1302,用于接收第一终端向第二终端发送的文件并保存。

传输模块1304,用于接收第二终端文件传输请求,根据文件传输请求建立与第二终端之间的多路离线传输通道,多路离线传输通道用于当第一终端和第二终端之间具有直连传输通道时,与直连传输通道共同传输文件至至第二终端。

在一个实施例中,上述直连传输通道包括第一终端与第二终端之间的局域网传输通道、蓝牙传输通道和物理连接传输通道中的至少一种。

在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:第二终端获取第一终端发送的会话消息,会话消息中携带有第一终端发送的文件对应的文件标识;第二终端触发会话消息,产生文件传输请求,文件传输请求用于从服务器请求传输文件标识对应的文件;当第二终端检测到与第一终端之间具有直连传输通道时,则通过服务器提供的多路离线传输通道及直连传输通道传输文件标识对应的文件。

在一个实施例中,计算机程序被处理器执行上述步骤时,会话消息中还携带有第一终端的局域网地址;当第二终端根据第一终端的局域网地址检测到与第一终端处于同一局域网中时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,计算机程序被处理器执行上述步骤时,会话消息中还携带有第一终端的蓝牙标识;当第二终端根据第一终端的蓝牙标识检测到与第一终端通过蓝牙连接时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,计算机程序被处理器执行上述步骤时,当第二终端检测到与第一终端通过物理连接方式连接时,则第二终端与第一终端之间具有直连传输通道。

在一个实施例中,计算机程序被处理器执行通过服务器提供的多路离线传输通道及与直连传输通道传输文件标识对应的文件的步骤时,包括:获取为多路离线传输通道中包含的每个离线下载器分配的对应的文件分片区间以及每个离线下载器对对应的文件分片区间的传输速度;将离线下载器按照每个离线下载器分配的对应的文件分片区间的顺序进行排列;根据排列后的每个离线下载器分配的对应的文件分片区间以及对文件分片区间的传输速度计算得到传输函数;根据传输函数获取最大时间点所在的离线下载器对应的文件分片区间;通过直连传输通道与多路离线传输通道传输与最大时间点对应的文件分片区间。

在一个实施例中,计算机程序被处理器执行通过直连传输通道与多路离线传输通道传输与最大时间点对应的文件分片区间的步骤时,包括:获取对直连传输通道的预设传输速度值;获取最大时间点所在的离线下载器的传输速度;根据直连通道的预设传输速度值与最大时间点所在的离线下载器的传输速度计算得到传输速度比例;通过传输速度比例分别从直连传输通道及最大时间点所在的离线下载器获取与最大时间点对应的文件分片区间。

在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:接收第一终端向第二终端发送的文件并保存;接收第二终端发起的文件传输请求,根据文件传输请求建立与第二终端之间的多路离线传输通道,多路离线传输通道用于当第一终端和第二终端之间具有直连传输通道时,与直连传输通道共同传输文件至至第二终端。

在一个实施例中,计算机程序被处理器执行时直连传输通道包括第一终端与第二终端之间的局域网传输通道、蓝牙传输通道和物理连接传输通道中的至少一种。

应该理解的是,虽然上述实施例中的流程示意图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1