一种数据发送方法和装置
一种数据发送方法和装置
技术领域
本发明涉及视联网技术领域,特别是涉及一种数据发送方法和装置。
背景技术
在视联网中,为了加快发送音视频数据的速度,使得实时传输、播放的音视频更加清晰流畅,通常会使用多个网卡发送音视频数据。
在现有技术中,使用多个网卡发送音视频数据时,先将需要传输的音视频数据分配给各网卡,各网卡独自分别将接收到的音视频数据包发送到网络,接收方在接收到音视频数据包后,对音视频数据包按照时间顺序进行排序,最后将排序后的音视频数据包进行显示播放。
发明人在研究上述技术方案的过程中发现,上述技术方案存在如下缺点:网卡在将音视频数据包发送到网络中时,由于各网卡的传输速度往往不同,会出现部分网卡传输速度慢,部分网卡传输速度快的现象;传输速度快的网卡发送的音视频数据包很快到达接收方,传输速度慢的网卡发送的音视频数据包会较长一段时间滞留在网卡中,而接收方只有在收到连续音视频数据包的情况下,才能流畅播放音视频,因此,上述方案中由于部分网卡传输速度慢,致使其他网卡的音视频数据包传输到接收方后,也只能等待传输速度慢的网卡的音视频数据包,严重影响传输效率。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的数据发送方法和装置。
为了解决上述问题,本发明实施例公开了一种数据发送方法,应用于具备多个网卡的视联网终端中,包括:
确定每个所述网卡对应的发送队列的时间距离;其中,所述发送队列中设置有至少一个视联网数据包,每个所述视联网数据包对应有创建时间;
根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;
按照创建时间对调整后的发送队列中的视联网数据包进行排序;
根据排序后的发送队列发送视联网数据包。
优选地,所述发送队列中设置有至少一个视联网数据包的步骤,包括:
预先根据待发送的视联网数据创建出至少一个视联网数据包,并按照每个所述视联网数据包对应的创建时间的先后顺序,在所述多个网卡对应的发送队列中,从队首至队尾依次设置每个所述视联网数据包;
所述确定每个所述网卡对应的发送队列的时间距离的步骤,包括:
将发送队列中位于队首的视联网数据包的创建时间与当前时间的差值,确定为所述发送队列的时间距离。
优选地,所述根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整的步骤,包括:
将时间距离最大的发送队列确定为第一发送队列,并将所述第一发送队列中位于队首的视联网数据包确定为目标视联网数据包;
将时间距离最小的发送队列确定为第二发送队列;
将所述目标视联网数据包从所述第一队列中取出并设置到所述第二发送队列中。
优选地,当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;
将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
优选地,确定第一线程和第二线程;
其中,所述第一线程用于确定每个所述网卡对应的发送队列的时间距离;根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;根据调整后的发送队列发送视联网数据包;
所述第二线程用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
本发明还提供了一种数据发送装置,所述装置中设置有多个网卡,所述装置包括:
时间距离确定模块,用于确定每个所述网卡对应的发送队列的时间距离;其中,所述发送队列中设置有至少一个视联网数据包,每个所述视联网数据包对应有创建时间;
调整模块,用于根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;
排序模块,用于按照创建时间对调整后的发送队列中的视联网数据包进行排序;
发送模块,用于根据排序后的发送队列发送视联网数据包。
优选地,所述时间距离确定模块包括:
视联网数据包设置单元,用于预先根据待发送的视联网数据创建出至少一个视联网数据包,并按照每个所述视联网数据包对应的创建时间的先后顺序,在所述多个网卡对应的发送队列中,从队首至队尾依次设置每个所述视联网数据包;
时间距离确定单元,用于将发送队列中位于队首的视联网数据包的创建时间与当前时间的差值,确定为所述发送队列的时间距离。
优选地,所述调整模块包括:
第一确定单元,用于将时间距离最大的发送队列确定为第一发送队列,并将所述第一发送队列中位于队首的视联网数据包确定为目标视联网数据包;
第二确定单元,用于将时间距离最小的发送队列确定为第二发送队列;
调整单元,用于将所述目标视联网数据包从所述第一队列中取出并设置到所述第二发送队列中。
优选地,获取模块,用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;
设置模块,用于将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
优选地,线程确定模块,用于确定第一线程和第二线程;
其中,所述第一线程用于确定每个所述网卡对应的发送队列的时间距离;根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;根据调整后的发送队列发送视联网数据包;
所述第二线程用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
本发明实施例包括以下优点:
本发明实施例应用视联网的特性,首先确定每个网卡对应的发送队列的时间距离;由于发送队列中设置有至少一个视联网数据包,每个视联网数据包对应有创建时间,因此,可以根据发送队列中视联网数据包的创建时间确定出该发送队列的时间距离;然后依据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,实际应用中,根据时间距离能区别出传输速度较快的网卡,及传输速度较慢的网卡,因此,根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,相当于由传输速度较快的网卡代替传输速度较慢的网卡承担一部分视联网数据包的发送;由于发送队列通常是从队首按顺序发出视联网数据包,因此按照创建时间对调整后的发送队列中的视联网数据包进行排序后,根据排序后的发送队列发送视联网数据包,可以让调整后的视联网数据包尽快从发送队列中发出,从而均衡了各网卡发送队列发送视联网数据包的速度,使得各网卡发送队列中的视联网数据包能够按照创建时间顺序快速发出,大大提高了视联网数据包的传输效率。
附图说明
图1是本发明的一种视联网的组网示意图;
图2是本发明的一种节点服务器的硬件结构示意图;
图3是本发明的一种接入交换机的硬件结构示意图;
图4是本发明的一种以太网协转网关的硬件结构示意图;
图5是本发明的一种数据发送方法实施例的步骤流程图;
图6是本发明的一种数据发送方法实施例的具体步骤流程图;
图7是本发明的一种数据发送装置实施例的结构框图;
图8是本发明的一种数据发送装置实施例的具体结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
视联网是网络发展的重要里程碑,是一个实时网络,能够实现高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。
视联网采用实时高清视频交换技术,可以在一个网络系统上将所需的服务,如高清视频会议、视频监控、智能化监控分析、应急指挥、数字广播电视、延时电视、网络教学、现场直播、VOD点播、电视邮件、个性录制(PVR)、内网(自办)频道、智能化视频播控、信息发布等数十种视频、语音、图片、文字、通讯、数据等服务全部整合在一个系统,通过电视或电脑实现高清品质视频播放。
为使本领域技术人员更好地理解本发明实施例,以下对视联网进行介绍:
视联网所应用的部分技术如下所述:
网络技术(Network Technology)
视联网的网络技术创新改良了传统以太网(Ethernet),以面对网络上潜在的巨大视频流量。不同于单纯的网络分组包交换(Packet Switching)或网络电路交换(CircuitSwitching),视联网技术采用Packet Switching满足Streaming需求。视联网技术具备分组交换的灵活、简单和低价,同时具备电路交换的品质和安全保证,实现了全网交换式虚拟电路,以及数据格式的无缝连接。
交换技术(Switching Technology)
视联网采用以太网的异步和包交换两个优点,在全兼容的前提下消除了以太网缺陷,具备全网端到端无缝连接,直通用户终端,直接承载IP数据包。用户数据在全网范围内不需任何格式转换。视联网是以太网的更高级形态,是一个实时交换系统,能够实现目前互联网无法实现的全网大规模高清视频实时传输,将众多网络视频应用推向高清化、统一化。
服务器技术(Server Technology)
视联网和统一视频系统上的服务器技术不同于传统意义上的服务器,它的流媒体传输是建立在面向连接的基础上,其数据处理能力与流量、通讯时间无关,单个网络层就能够包含信令及数据传输。对于语音和视频业务来说,视联网和统一视频系统流媒体处理的复杂度比数据处理简单许多,效率比传统服务器大大提高了百倍以上。
储存器技术(Storage Technology)
统一视频系统的超高速储存器技术为了适应超大容量和超大流量的媒体内容而采用了最先进的实时操作系统,将服务器指令中的节目信息映射到具体的硬盘空间,媒体内容不再经过服务器,瞬间直接送达到用户终端,用户等待一般时间小于0.2秒。最优化的扇区分布大大减少了硬盘磁头寻道的机械运动,资源消耗仅占同等级IP互联网的20%,但产生大于传统硬盘阵列3倍的并发流量,综合效率提升10倍以上。
网络安全技术(Network Security Technology)
视联网的结构性设计通过每次服务单独许可制、设备与用户数据完全隔离等方式从结构上彻底根除了困扰互联网的网络安全问题,一般不需要杀毒程序、防火墙,杜绝了黑客与病毒的攻击,为用户提供结构性的无忧安全网络。
服务创新技术(Service Innovation Technology)
统一视频系统将业务与传输融合在一起,不论是单个用户、私网用户还是一个网络的总合,都不过是一次自动连接。用户终端、机顶盒或PC直接连到统一视频系统,获得丰富多彩的各种形态的多媒体视频服务。统一视频系统采用“菜谱式”配表模式来替代传统的复杂应用编程,可以使用非常少的代码即可实现复杂的应用,实现“无限量”的新业务创新。
视联网的组网如下所述:
视联网是一种集中控制的网络结构,该网络可以是树型网、星型网、环状网等等类型,但在此基础上网络中需要有集中控制节点来控制整个网络。
如图1所示,视联网分为接入网和城域网两部分。
接入网部分的设备主要可以分为3类:节点服务器,接入交换机,终端(包括各种机顶盒、编码板、存储器等)。节点服务器与接入交换机相连,接入交换机可以与多个终端相连,并可以连接以太网。
其中,节点服务器是接入网中起集中控制功能的节点,可控制接入交换机和终端。节点服务器可直接与接入交换机相连,也可以直接与终端相连。
类似的,城域网部分的设备也可以分为3类:城域服务器,节点交换机,节点服务器。城域服务器与节点交换机相连,节点交换机可以与多个节点服务器相连。
其中,节点服务器即为接入网部分的节点服务器,即节点服务器既属于接入网部分,又属于城域网部分。
城域服务器是城域网中起集中控制功能的节点,可控制节点交换机和节点服务器。城域服务器可直接连接节点交换机,也可直接连接节点服务器。
由此可见,整个视联网络是一种分层集中控制的网络结构,而节点服务器和城域服务器下控制的网络可以是树型、星型、环状等各种结构。
形象地称,接入网部分可以组成统一视频系统(虚线圈中部分),多个统一视频系统可以组成视联网;每个统一视频系统可以通过城域以及广域视联网互联互通。
视联网设备分类
1.1 本发明实施例的视联网中的设备主要可以分为3类:服务器,交换机(包括以太网网关), 终端(包括各种机顶盒,编码板,存储器等)。视联网整体上可以分为城域网(或者国家网、全球网等)和接入网。
1.2 其中接入网部分的设备主要可以分为3类:节点服务器,接入交换机(包括以太网网关), 终端(包括各种机顶盒,编码板,存储器等)。
各接入网设备的具体硬件结构为:
节点服务器:
如图2所示,主要包括网络接口模块201、交换引擎模块202、CPU模块203、磁盘阵列模块204;
其中,网络接口模块201,CPU模块203、磁盘阵列模块204进来的包均进入交换引擎模块202;交换引擎模块202对进来的包进行查地址表205的操作,从而获得包的导向信息;并根据包的导向信息把该包存入对应的包缓存器206的队列;如果包缓存器206的队列接近满,则丢弃;交换引擎模202轮询所有包缓存器队列,如果满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。磁盘阵列模块204主要实现对硬盘的控制,包括对硬盘的初始化、读写等操作;CPU模块203主要负责与接入交换机、终端(图中未示出)之间的协议处理,对地址表205(包括下行协议包地址表、上行协议包地址表、数据包地址表)的配置,以及,对磁盘阵列模块204的配置。
接入交换机:
如图3所示,主要包括网络接口模块(下行网络接口模块301、上行网络接口模块302)、交换引擎模块303和CPU模块304;
其中,下行网络接口模块301进来的包(上行数据)进入包检测模块305;包检测模块305检测包的目地地址(DA)、源地址(SA)、数据包类型及包长度是否符合要求,如果符合,则分配相应的流标识符(stream-id),并进入交换引擎模块303,否则丢弃;上行网络接口模块302进来的包(下行数据)进入交换引擎模块303;CPU模块304进来的数据包进入交换引擎模块303;交换引擎模块303对进来的包进行查地址表306的操作,从而获得包的导向信息;如果进入交换引擎模块303的包是下行网络接口往上行网络接口去的,则结合流标识符(stream-id)把该包存入对应的包缓存器307的队列;如果该包缓存器307的队列接近满,则丢弃;如果进入交换引擎模块303的包不是下行网络接口往上行网络接口去的,则根据包的导向信息,把该数据包存入对应的包缓存器307的队列;如果该包缓存器307的队列接近满,则丢弃。
交换引擎模块303轮询所有包缓存器队列,在本发明实施例中分两种情形:
如果该队列是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零;3)获得码率控制模块产生的令牌;
如果该队列不是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。
码率控制模块308是由CPU模块304来配置的,在可编程的间隔内对所有下行网络接口往上行网络接口去的包缓存器队列产生令牌,用以控制上行转发的码率。
CPU模块304主要负责与节点服务器之间的协议处理,对地址表306的配置,以及,对码率控制模块308的配置。
以太网协转网关:
如图4所示,主要包括网络接口模块(下行网络接口模块401、上行网络接口模块402)、交换引擎模块403、CPU模块404、包检测模块405、码率控制模块408、地址表406、包缓存器407和MAC添加模块409、MAC删除模块410。
其中,下行网络接口模块401进来的数据包进入包检测模块405;包检测模块405检测数据包的以太网MAC DA、 以太网MAC SA、以太网 length or frame type、视联网目地地址DA、视联网源地址SA、视联网数据包类型及包长度是否符合要求,如果符合则分配相应的流标识符(stream-id);然后,由MAC删除模块410减去MAC DA、 MAC SA、 length or frametype(2byte),并进入相应的接收缓存,否则丢弃;
下行网络接口模块401检测该端口的发送缓存,如果有包则根据包的视联网目地地址DA获知对应的终端的以太网MAC DA,添加终端的以太网MAC DA、 以太网协转网关的MAC SA、以太网 length or frame type,并发送。
以太网协转网关中其他模块的功能与接入交换机类似。
终端:
主要包括网络接口模块、业务处理模块和CPU模块;例如,机顶盒主要包括网络接口模块、视音频编解码引擎模块、CPU模块;编码板主要包括网络接口模块、视音频编码引擎模块、CPU模块;存储器主要包括网络接口模块、CPU模块和磁盘阵列模块。
1.3 城域网部分的设备主要可以分为2类:节点服务器,节点交换机,城域服务器。其中,节点交换机主要包括网络接口模块、交换引擎模块和CPU模块;城域服务器主要包括网络接口模块、交换引擎模块和CPU模块构成。
2、视联网数据包定义
2.1 接入网数据包定义
接入网的数据包主要包括以下几部分:目的地址(DA)、源地址(SA)、保留字节、payload(PDU)、CRC。
如下表所示,接入网的数据包主要包括以下几部分:
DA |
SA |
Reserved |
Payload |
CRC |
其中:
目的地址(DA)由8个字节(byte)组成,第一个字节表示数据包的类型(例如各种协议包、组播数据包、单播数据包等),最多有256种可能,第二字节到第六字节为城域网地址,第七、第八字节为接入网地址;
源地址(SA)也是由8个字节(byte)组成,定义与目的地址(DA)相同;
保留字节由2个字节组成;
payload部分根据不同的数据报的类型有不同的长度,如果是各种协议包的话是64个字节,如果是单组播数据包话是32 + 1024 = 1056个字节,当然并不仅仅限于以上2种;
CRC有4个字节组成,其计算方法遵循标准的以太网CRC算法。
2.2 城域网数据包定义
城域网的拓扑是图型,两个设备之间可能有2种、甚至2种以上的连接,即节点交换机和节点服务器、节点交换机和节点交换机、节点交换机和节点服务器之间都可能超过2种连接。但是,城域网设备的城域网地址却是唯一的,为了精确描述城域网设备之间的连接关系,在本发明实施例中引入参数:标签,来唯一描述一个城域网设备。
本说明书中标签的定义和MPLS(Multi-Protocol Label Switch,多协议标签交换)的标签的定义类似,假设设备A和设备B之间有两个连接,那么数据包从设备A到设备B就有2个标签,数据包从设备B到设备A也有2个标签。标签分入标签、出标签,假设数据包进入设备A的标签(入标签)是0x0000,这个数据包离开设备A时的标签(出标签)可能就变成了0x0001。城域网的入网流程是集中控制下的入网过程,也就意味着城域网的地址分配、标签分配都是由城域服务器主导的,节点交换机、节点服务器都是被动的执行而已,这一点与MPLS的标签分配是不同的,MPLS的标签分配是交换机、服务器互相协商的结果。
如下表所示,城域网的数据包主要包括以下几部分:
DA |
SA |
Reserved |
标签 |
Payload |
CRC |
即目的地址(DA)、源地址(SA)、保留字节(Reserved)、标签、payload(PDU)、CRC。其中,标签的格式可以参考如下定义:标签是32bit,其中高16bit保留,只用低16bit,它的位置是在数据包的保留字节和payload之间。
基于视联网的上述特性,提出了本发明实施例的核心构思之一,遵循视联网的协议,在设置有多网卡的视联网终端中,先确定每个网卡对应的发送队列的时间距离,根据每个发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;按照创建时间对调整后的发送队列中的视联网数据包进行排序;再根据排序后的发送队列发送视联网数据包,实现多网卡中视联网数据包的均衡传输。
参照图5,示出了本发明的一种数据发送方法实施例的步骤流程图,该方法可以应用于具备多个网卡的视联网终端中,具体可以包括如下步骤:
步骤501:确定每个所述网卡对应的发送队列的时间距离;其中,所述发送队列中设置有至少一个视联网数据包,每个所述视联网数据包对应有创建时间。
本发明实施例所应用的具备多个网卡的视联网终端可以为,具备多个网卡的智能手机、电脑、多媒体播放器、可穿戴式设备等,本发明实施例在此也不做限制。
本发明实施例中的视联网数据包,可以是音视频数据包。具体的说,在视联网中,当需要发送音视频数据时,因为音视频数据一般较大,通常会将音视频数据创建为若干音视频数据包,然后再进行传输。当然,视联网数据包也可以是包含任意内容的数据包,例如文字、图片等等,本发明实施例对此不作限制。
具体应用中,每个视联网数据包在被创建时,都会对应有创建时间,例如,将视联网数据创建为5个视联网数据包时,视联网数据包1、视联网数据包2、视联网数据包3、视联网数据包4、视联网数据包5创建时间可以分别依次是:2017年12月1日13点10分10秒、2017年12月1日13点10分11秒、2017年12月1日13点10分12秒、2017年12月1日13点10分13秒、2017年12月1日13点10分14秒。
在本发明实施例中,视联网终端中的每个网卡对应设置有发送队列,在得到上述需要发送的多个视联网数据后,将该视联网数据包分别设置在不同的发送队列中。
在本发明的一个可选实施例中,每个网卡对应的发送队列的时间距离具体可以通过以下方式确定:分别获取每个发送队列中各视联网数据包的创建时间,选出每个发送队列中最早创建的一个视联网数据包的创建时间,将每个创建时间分别与预设时间进行减法运算,得到的差值就是对应发送队列的时间距离。
例如,假设视联网终端中有两个网卡,并分别对应设置有两个发送队列,上述视联网数据包1、3、5在第一发送队列,视联网数据包2、4在第二发送队列,此时先确定出第一发送队列中最早创建的视联网数据包是视联网数据包1,创建时间是2017年12月1日13点10分10秒,第二发送队列中最早创建的视联网数据包是视联网数据包2,创建时间是2017年12月1日13点10分11秒。该预设时间可以是早于上述任一视联网数据包创建时间的一个时间,比如2017年12月1日13点10分1秒,此时,上述两个发送队列中,分别用视联网数据包1、视联网数据包2的创建时间减去该预设时间,得到9、10两个时间距离,时间距离最小的9对应的就是第一发送队列,包含着创建时间最早的视联网数据包1;该预设时间也可以是晚于上述视联网数据包创建时间的一个时间,比如2017年12月1日13点10分20秒,此时,上述两个发送队列中,分别用视联网数据包1、视联网数据包2的创建时间减去该预设时间,将差值的绝对值作为时间距离,得到10、9两个时间距离,时间距离最大的10对应的就是第一发送队列,包含着创建时间最早的视联网数据包1。
可以理解,本领域技术人员还可以根据实际情况,选择其他确定每个网卡对应的发送队列的时间距离的方法,本发明实施例对此不作具体限制。
步骤502:根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整。
具体应用中,以步骤501中预设时间是晚于上述任一视联网数据包创建时间的时间值为例,在多网卡对视联网数据包进行发送时,时间距离较小的发送队列对应的往往是传输速度较快的网卡,相应的,时间距离较大的发送队列对应的往往是传输速度较慢的网卡。
假设视联网终端中有五个网卡,并分别对应设置有五个发送队列A、B、C、D、E,该五个发送队列对应的时间距离依次是10、20、30、40、50,则可以认为发送队列A、B、C、D、E发送视联网数据包的速度依次是最快至最慢。
此时,优选地,本发明实施例中对满足预设条件的视联网数据包所在的位置进行调整的方法可以是:将发送视联网数据包速度最慢的发送队列E中创建时间最早的一个视联网数据包,调整到发送视联网数据包速度最快的发送队列A中,以实现由传输速度最快的发送队列A代替传输速度最慢的发送队列E承担一个视联网数据包的发送。
作为本发明实施例的另一种优选方式,对满足预设条件的视联网数据包所在的位置进行调整的方法还可以是:将发送队列E中创建时间较早的两个或两个以上的视联网数据包,调整到发送队列A中,即将发送视联网数据包速度最慢的发送队列中,创建时间较早的多个视联网数据包调整到发送视联网数据包速度最快的发送队列,以实现由传输速度最快的发送队列A代替传输速度最慢的发送队列E承担多个视联网数据包的发送。
作为本发明实施例的另一种优选方式,对满足预设条件的视联网数据包所在的位置进行调整的方法还可以是:确定出发送队列D、E中创建较早的一个或多个视联网数据包,平均或随机的调整到发送队列A、B中,即将发送视联网数据包速度较慢的多个发送队列中,创建时间较早的多个视联网数据包调整到发送视联网数据包速度较快的多个发送队列,以实现由传输速度较快的发送队列A、B代替传输速度较慢的发送队列D、E承担多个视联网数据包的发送。
可以理解,本领域技术人员还可以根据实际情况,根据各发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,使得传输速度较快的发送队列可以代替传输速度较慢的发送队列承担一部分视联网数据包的发送,本发明实施例对此不作具体限制。
步骤503:按照创建时间对调整后的发送队列中的视联网数据包进行排序。
本发明实施例中,由于发送队列是从队尾接收视联网数据包,从队首发出视联网数据包的有序队列,当对发送队列中的视联网数据包进行调整后,为了确保创建时间最早的视联网数据包被最快发出,需要对调整后的发送队列中的视联网数据包按照创建时间进行排序。具体可以通过快速排序、冒泡排序、并列排序等指针指向地址的排序算法对视联网数据包进行排序。
下面对上述排序方法进行简单介绍:
快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
冒泡排序:复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
归并排序:建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
可以理解,排序后的发送队列中,从队首到队尾依次放置着创建时间最早至创建时间最晚的视联网数据包。
步骤504:根据排序后的发送队列发送视联网数据包。
本发明实施例中,排序后的发送队列中,从队首到队尾依次放置着创建时间最早至创建时间最晚的视联网数据包,按照排序后的顺序发送出视联网数据包,可以实现将创建时间早的数据包尽快发出。
本发明实施例应用视联网的特性,首先确定每个网卡对应的发送队列的时间距离;由于发送队列中设置有至少一个视联网数据包,每个视联网数据包对应有创建时间,因此,可以根据发送队列中视联网数据包的创建时间确定出该发送队列的时间距离;然后依据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,实际应用中,根据时间距离能区别出传输速度较快的网卡,和传输速度较慢的网卡,因此,根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,相当于由传输速度较快的网卡代替传输速度较慢的网卡承担一部分视联网数据包的发送;由于发送队列通常是从队首按顺序发出视联网数据包,因此按照创建时间对调整后的发送队列中的视联网数据包进行排序后,根据排序后的发送队列发送视联网数据包,可以让调整后的视联网数据包尽快从发送队列中发出,从而均衡了各网卡发送队列发送视联网数据包的速度,使得各网卡发送队列中的视联网数据包能够按照创建时间顺序快速发出,大大提高了数据的传输效率。
参照图6,示出了本发明的一种数据发送的方法实施例的具体步骤流程图,该方法可以应用于具备多个网卡的视联网终端中,具体可以包括如下步骤:
步骤601:预先根据待发送的视联网数据创建出至少一个视联网数据包,并按照每个所述视联网数据包对应的创建时间的先后顺序,在所述多个网卡对应的发送队列中,从队首至队尾依次设置每个所述视联网数据包。
步骤602:将发送队列中位于队首的视联网数据包的创建时间与当前时间的差值,确定为所述发送队列的时间距离。
本发明实施例中,视联网数据包在发送队列中有序放置,具体来说,在每个发送队列从队首到队尾的位置,按照视联网数据包创建时间的早晚依次设置对应的视联网数据包,因此,每个发送队列队首的视联网数据包就是该发送队列中创建时间最靠前的视联网数据包,需要被尽快发出;此时,只需要将每个发送队列队首的视联网数据包的创建时间与当前时间进行减法运算,得到的差值就可以作为该发送队列的时间距离。
具体应用中,可以在将视联网数据包设置到各发送队列之前,按照视联网数据包的创建时间先后顺序进行排序,具体来说,确定分配给各发送队列的视联网数据包后,先分别将对应各发送队列的视联网数据包按照创建时间的先后进行排序,再将排序后的视联网数据包按照创建时间从最早到最晚的顺序依次从队尾发送到对应的发送队列,使得各发送队列中的视联网数据包,按照创建时间的早晚依次设置在队首到队尾的位置;也可以将视联网数据包随机的设置到各发送队列之后,在各发送队列中将视联网数据包按照创建时间的先后进行排序,使得各发送队列中的视联网数据包,按照创建时间的早晚依次设置在队首到队尾的位置,本发明实施例对此不作限制。
本发明实施例中优选地,可以直接在各发送队列中获取队首视联网数据包的创建时间后,将其与当前时间的差值作为该发送队列的时间距离;由于获取的视联网数据包位置确定,因此获取此视联网数据包创建时间的效率非常高;将该创建时间直接与当前时间进行差值计算,因此不需要额外设定进行时间距离计算的其他预设时间,能进一步提高确定各发送队列时间距离的效率。
步骤603:将时间距离最大的发送队列确定为第一发送队列,并将所述第一发送队列中位于队首的视联网数据包确定为目标视联网数据包。
本发明实施例中,时间距离最大的第一发送队列,对应的通常是传输速度最慢的网卡,该第一发送队列中位于队首的视联网数据包通常是创建时间最早的视联网数据包。
步骤604:将时间距离最小的发送队列确定为第二发送队列。
本发明实施例中,时间距离最小的第二发送队列,对应的通常是传输速度最快的网卡,可以承担更多的发送视联网数据包的任务,以提高发送视联网数据包的效率。
步骤605:将所述目标视联网数据包从所述第一队列中取出并设置到所述第二发送队列中。
本发明实施例中,目标视联网数据包是创建时间最早的视联网数据包,将其从发送速度最慢的第一发送队列中取出,并设置到发送速度最快的第二发送队列中,由第二发送队列进行发送,能有效减少第一发送队列的负荷,提高视联网数据包的发送效率。
举例来说,假设初始时第一发送队列中分配有1、3、5、7四个视联网数据包,第二发送队列中分配有2、4、6、8四个视联网数据包;视联网数据包1-8的创建时间依次从最早到最晚,在发送一段时间后,由于第一发送队列对应的网卡发送速度较慢,在第一发送队列中还有3、5、7三个视联网数据包;而第二发送队列发送速度较快,在第二发送队列中只剩下一个视联网数据包8,此时,依据上述步骤,可以得到时间距离最大的是第一发送队列,时间距离最小的是第二发送队列,将视联网数据包3调整到第二发送队列中,由第二发送队列发送视联网数据包3,与此同时,第一发送队列发送视联网数据包5,视联网数据包3和5被同时发送,可以避免因发送速度较慢的发送队列中的视联网数据包长时间滞留,造成的传输效率低下的情况发生。
步骤606:按照创建时间对调整后的发送队列中的视联网数据包进行排序。
步骤607:根据排序后的发送队列发送视联网数据包。
步骤608:当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数。
步骤609:将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
本发明实施例中,发送队列中视联网数据包个数较多,往往是因为该发送队列发送较慢,造成视联网数据包一定程度的滞留,发送队列中视联网数据包个数最少,则说明该发送队列的发送速度往往最快,当有新增的视联网数据包需要发送时,将其设置在视联网数据包个数最少的发送队列,该发送队列可以顺次的将新增的视联网数据包发送,避免了将新增数据包设置在其他发送较慢的发送队列后,再通过上述方法将其从发送较慢的发送队列调整到发送速度较快的发送队列的过程,进一步提升发送视联网数据包的效率。
作为本发明实施例的一种优选方案,可以确定第一线程、第二线程;其中,所述第一线程用于确定每个所述网卡对应的发送队列的时间距离;根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;根据调整后的发送队列发送视联网数据包;所述第二线程用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
本发明实施例中,可以预设两个独立的第一线程和第二线程,第一线程用通过计算调整各发送队列中的视联网数据包,第二线程用于处理新增的视联网数据包的分配,第一线程和第二线程还可以通过线程锁进行控制,以避免第一线程和第二线程在操作过程中出现冲突。
本发明实施例的预设两个线程,第一线程和第二线程职能分开,并且可以设置线程锁避免第一线程和第二线程之间发生冲突,能进一步提高发送视联网数据包的效率。
可以理解,在将新增的视联网数据包设置在相应的发送队列后,各发送队列可以循环进行步骤602至步骤609的方法,以完成对视联网数据包的发送。
本发明实施例应用视联网的特性,首先确定每个网卡对应的发送队列的时间距离;由于发送队列中设置有至少一个视联网数据包,每个视联网数据包对应有创建时间,因此,可以根据发送队列中视联网数据包的创建时间确定出该发送队列的时间距离;然后依据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,实际应用中,根据时间距离能区别出传输速度较快的网卡,和传输速度较慢的网卡,因此,根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,相当于由传输速度较快的网卡代替传输速度较慢的网卡承担一部分视联网数据包的发送;由于发送队列通常是从队首按顺序发出视联网数据包,因此按照创建时间对调整后的发送队列中的视联网数据包进行排序后,根据排序后的发送队列发送视联网数据包,可以让调整后的视联网数据包尽快从发送队列中发出,从而均衡了各网卡发送队列发送视联网数据包的速度,使得各网卡发送队列中的视联网数据包能够按照创建时间顺序快速发出,大大提高了数据的传输效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图7,示出了本发明的一种数据发送装置的结构框图,该装置设置有多个网卡,可以应用于视联网中,具体可以包括如下模块:
时间距离确定模块710,用于确定每个所述网卡对应的发送队列的时间距离;其中,所述发送队列中设置有至少一个视联网数据包,每个所述视联网数据包对应有创建时间。
调整模块720,用于根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整。
排序模块730,用于按照创建时间对调整后的发送队列中的视联网数据包进行排序。
发送模块740,用于根据排序后的发送队列发送视联网数据包。
优选地,参照图8,在图7的基础上,所述数据发送装置的时间距离确定模块710包括:
视联网数据包设置单元7101,用于预先根据待发送的视联网数据创建出至少一个视联网数据包,并按照每个所述视联网数据包对应的创建时间的先后顺序,在所述多个网卡对应的发送队列中,从队首至队尾依次设置每个所述视联网数据包。
时间距离确定单元7102,用于将发送队列中位于队首的视联网数据包的创建时间与当前时间的差值,确定为所述发送队列的时间距离。
所述调整模块720包括:
第一确定单元7201,用于将时间距离最大的发送队列确定为第一发送队列,并将所述第一发送队列中位于队首的视联网数据包确定为目标视联网数据包。
第二确定单元7202,用于将时间距离最小的发送队列确定为第二发送队列。
调整单元7203,用于将所述目标视联网数据包从所述第一队列中取出并设置到所述第二发送队列中。
所述数据发送装置还可以包括:
获取模块750,用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数。
设置模块760,用于将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
线程确定模块770,用于确定第一线程和第二线程;其中,所述第一线程用于确定每个所述网卡对应的发送队列的时间距离;根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整;根据调整后的发送队列发送视联网数据包;所述第二线程用于当有新增的视联网数据包需要发送时,获取每个所述发送队列中的视联网数据包个数;将所述新增的视联网数据包设置在视联网数据包个数最少的发送队列。
本发明实施例应用视联网的特性,首先确定每个网卡对应的发送队列的时间距离;由于发送队列中设置有至少一个视联网数据包,每个视联网数据包对应有创建时间,因此,可以根据发送队列中视联网数据包的创建时间确定出该发送队列的时间距离;然后依据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,实际应用中,根据时间距离能区别出传输速度较快的网卡,和传输速度较慢的网卡,因此,根据每个所述发送队列的时间距离,对满足预设条件的视联网数据包所在的位置进行调整,相当于由传输速度较快的网卡代替传输速度较慢的网卡承担一部分视联网数据包的发送;由于发送队列通常是从队首按顺序发出视联网数据包,因此按照创建时间对调整后的发送队列中的视联网数据包进行排序后,根据排序后的发送队列发送视联网数据包,可以让调整后的视联网数据包尽快从发送队列中发出,从而均衡了各网卡发送队列发送视联网数据包的速度,使得各网卡发送队列中的视联网数据包能够按照创建时间顺序快速发出,大大提高了数据的传输效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据发送方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。