CN106302604B - 数据传输方法及装置 - Google Patents

数据传输方法及装置 Download PDF

Info

Publication number
CN106302604B
CN106302604B CN201510307064.0A CN201510307064A CN106302604B CN 106302604 B CN106302604 B CN 106302604B CN 201510307064 A CN201510307064 A CN 201510307064A CN 106302604 B CN106302604 B CN 106302604B
Authority
CN
China
Prior art keywords
data
length
file
received
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510307064.0A
Other languages
English (en)
Other versions
CN106302604A (zh
Inventor
林育佳
姚永刚
沈健
朱凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan Tengyun Information Industry Co.,Ltd.
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510307064.0A priority Critical patent/CN106302604B/zh
Publication of CN106302604A publication Critical patent/CN106302604A/zh
Application granted granted Critical
Publication of CN106302604B publication Critical patent/CN106302604B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据传输方法,包括:获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;构建所述数据块的文件头信息,并建立与接收端的通信连接;基于所述通信连接将所述多个数据块发送至所述接收端。本发明还公开一种数据传输装置。本发明使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。

Description

数据传输方法及装置
技术领域
本发明涉及到计算机技术领域,特别涉及到数据传输方法及装置。
背景技术
数据通道中,有时需要把实时采集的文件数据发送到其他机器上。当机器以集群的形式存在时,使用现有的数据同步工具,如rsync或scp传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高。
发明内容
本发明实施例提供一种数据传输方法及装置,旨在解决现有的数据同步工具传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题。
为实现上述目的,本发明实施例提出一种数据传输方法,包括:
获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;
构建所述数据块的文件头信息,并建立与接收端的通信连接;
基于所建立的通信连接将所述多个数据块发送至所述接收端。
为了实现上述目的,本发明实施例还进一步提出一种数据传输装置,包括:
获取模块,用于获取待发送文件;
处理模块,用于将所述待发送文件按照预设方式分为多个数据块;
建立模块,用于构建所述数据块的文件头信息,并建立与接收端的通信连接;
传输模块,用于基于所建立的通信连接将所述多个数据块发送至所述接收端。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
本发明通过将待发送文件分为多个数据块,并建立与接收端的通信连接,使得数据传输不受系统限制,将数据块发送至接收端,有效避免现有的数据同步工具存在传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题,使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
附图说明
图1为本发明实施例数据排序装置所涉及的硬件架构示意图;
图2为本发明数据排序方法的第一实施例的流程示意图;
图3为本发明文件头信息一实施例的示意图;
图4为本发明数据排序方法的第二实施例的流程示意图;
图5为数据发送一实施例的流程示意图;
图6为本发明数据排序方法的第三实施例的流程示意图;
图7为本发明接收数据一实施例的流程示意图;
图8为本发明获取到起始数据块一实施例的流程示意图;
图9为本发明获取到中间数据块一实施例的流程示意图;
图10为本发明判断是否成功失败信息生成返回码信息的一实施例的流程示意图;
图11为本发明判断是否成功失败信息过程的示意图;
图12为本发明数据排序装置的第一实施例的功能模块示意图;
图13为本发明数据排序装置的第二实施例的功能模块示意图;
图14为本发明数据排序装置的第三实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;构建所述数据块的文件头信息,并建立与接收端的通信连接;将所述多个数据块发送至所述接收端。通过将待发送文件分为多个数据块,并建立与接收端的通信连接,使得数据传输不受系统限制,将数据块发送至接收端,有效避免现有的数据同步工具存在传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题,使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
由于现有的数据同步工具存在传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题。
本发明实施例架构一数据排序装置,该数据排序装置通过将待发送文件分为多个数据块,并建立与接收端的通信连接,使得数据传输不受系统限制,将数据块发送至接收端,有效避免现有的数据同步工具存在传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题,使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
其中,本实施例数据排序装置可以承载于PC端,也可以承载于手机、平板电脑等可以使用游戏等网络应用的电子终端。该数据排序装置所涉及的硬件架构可以如图1所示。
图1示出了本发明实施例数据排序装置所涉及的硬件架构。如图1所示,所述数据排序装置所涉及的硬件包括:处理器301,例如CPU,网络接口304,用户接口303,存储器305,通信总线302。其中,通信总线302用于实现该信息推送平台中各组成部件之间的连接通信。用户接口303可以包括显示屏(Display)、键盘(Keyboard)、鼠标等组件,用于接收用户输入的信息,并将接收的信息发送至处理器305进行处理。显示屏可以为LCD显示屏、LED显示屏,也可以为触摸屏,用于显示数据排序装置需要显示的数据,例如显示数据获取、返回码信息、数据排序等操作界面。可选用户接口303还可以包括标准的有线接口、无线接口。网络接口304可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器305可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器305可选的还可以是独立于前述处理器301的存储装置。如图1所示,作为一种计算机存储介质的存储器305中可以包括操作系统、网络通信模块、用户接口模块以及数据排序程序。
在图1所示的数据排序装置所涉及的硬件中,网络接口304主要用于连接应用平台,与应用平台进行数据通信;用户接口303主要用于连接客户端,与客户端进行数据通信,接收客户端输入的信息和指令;而处理器301可以用于调用存储器305中存储的数据排序程序,并执行以下操作:
获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;
构建所述数据块的文件头信息,并建立与接收端的通信连接;
基于所建立的通信连接将所述多个数据块发送至所述接收端。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
在将所述多个数据块发送至所述接收端后,接收所述接收端的返回码信息;
根据所述返回码信息判断所述数据块是否发送成功;
在所述数据块发送失败时,重新向所述接收端发送所述发送失败的数据块。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
接收发送端发送来的数据;
在所接收到的数据的数据量大于预设数据量时,判断是否存储所接收到的数据;
若未存储所接收到的数据,则判断所接收到的数据长度是否大于文件头的长度,若所接收到的数据长度小于文件头的长度,则继续接收发送端发送来的数据块;
若所接收到的数据长度大于文件头的长度,则确定所接收到的数据的文件头信息。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
根据所述文件头信息,判断所接收到的数据的长度是否达到整个文件的长度;
若达到,则读取与所述整个文件的长度对应的数据和文件头信息合并,且将合并后的数据的类型设置为完整块写至文件数据共享内存保存。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
若未达到,则判断所接收到的数据的长度是否大于预设长度;
在所接收到的数据的长度大于预设长度时,从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;
将合并后的数据的类型设置为起始块写至文件数据共享内存保存;
若所接收到的数据的长度小于预设长度时,继续接收发送端发送的数据。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
若存储所接收到的数据,则判断所接收到的数据的长度是否大于该文件剩余未接收到的数据长度;
若所接收到的数据的长度大于该文件剩余未接收到的数据长度,则在共享内存中删除所述数据的结点信息;
若所接收到的数据的长度小于该文件剩余未接收到的数据长度,则从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;
将合并后的数据的类型设置为中间块写至文件数据共享内存保存。
进一步地,在一个实施例中,处理器301调用存储器305中存储的数据排序程序可以执行以下操作:
从共享内存中读取数据,解析文件头,判断数据类型;
根据数据类型对所读取的数据进行相应处理,校验所读取数据是否为正确数据并生成成功失败信息写返回码信息至共享内存,以将所述返回码信息发送至所述发送端。
本实施例根据上述方案,通过将待发送文件分为多个数据块,并建立与接收端的通信连接,使得数据传输不受系统限制,将数据块发送至接收端,有效避免现有的数据同步工具存在传输数据时依赖于系统环境,需要指定相关目录或参数等会有许多局限性,不易于机器扩展,且使用这些工具做大批量、实时的文件传输时,数据传输效率不高的问题,使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
基于上述硬件架构,提出本发明数据排序方法实施例。
如图2所示,提出本发明一种数据排序方法的第一实施例,所述数据排序方法包括:
步骤S10,获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;
在本实施例中,在数据通道中,需要在机器间传输数据时,获取待发送文件,启动发送进程,循环读取所要发送的目录文件,将所述待发送文件按照预设方式分为多个数据块,所述预设方式包括按照文件的数据量、长度进行划分。
步骤S20,构建所述数据块的文件头信息,并建立与接收端的通信连接;
在循环到需要发送的目录文件,且划分为多个数据块后,构建所读取文件的文件头信息,所述文件头信息包括但不限于文件数据校验码、文件大小等(参考图3)。文件头信息包括数据块类型,在这里,数据块类型值可不设置,也可以直接设置为all(完整块)。将构建的文件头信息与数据块拼接,形成拼接后的数据以供发送至接收端机器。然后与接收端及其建立通信连接,判断所述通信连接是否建立成功,例如,通过检测数据包的形式检测是否建立成功或采取其他常用的方式进行连接建立成功的测试,所述通信连接优选为sockettcp连接,提高所述通信连接建立的稳定性。
步骤S30,基于所述通信连接将所述多个数据块发送至所述接收端。
在建立与所述接收端机器的通信连接后,将数据发送,后面再接收返回码信息,判断文件发送成功或失败。具体的,参考图4,在本发明方法的第二实施例中,在所述步骤S30之后,还包括:
步骤S40,在将所述多个数据块发送至所述接收端后,接收所述接收端的返回码信息;步骤S50,根据所述返回码信息判断所述数据块是否发送成功;步骤S60,在所述数据块发送失败时,重新向所述接收端发送所述发送失败的数据块。在数据发送失败时,继续发送未发送成功的数据,或在所有数据均未发送成功时,检查通信连接是否断开或者网络出现问题,以及时将需要传送的文件传送到接收端机器。
为了更好的描述本发明实施例,参考图5,数据发送过程包括:
1、读取文件;2、构造文件头信息,然后与文件数据拼接;3、与接收端建立socket连接,发送数据。
本实施例通过将待发送文件分为多个数据块,并建立与接收端的socket连接,使得数据传输不受系统限制,将数据块发送至接收端。使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
进一步地,基于上述数据排序方法的第一和第二实施例,提出本发明数据排序方法的第三实施例。如图6所示,所述方法还可以包括:
步骤S100,接收发送端发送来的数据;
步骤S200,在所接收到的数据的数据量大于预设数据量时,判断是否存储所接收到的数据;
步骤S300,若未存储所接收到的数据,则判断所接收到的数据长度是否大于文件头的长度,若所接收到的数据长度小于文件头的长度,则继续接收发送端发送来的数据块;
步骤S400,若所接收到的数据长度大于文件头的长度,则确定所接收到的数据的文件头信息;
步骤S500,根据所述文件头信息,判断所接收到的数据的长度是否达到整个文件的长度;
步骤S600,若达到,则读取与所述整个文件的长度对应的数据和文件头信息合并,且将合并后的数据的类型设置为完整块写至文件数据共享内存保存。
在本实施例中,参考图7,需要接收发送端发送的数据时,接收进程启动,申请两块共享内存一块用于文件数据存储,一块用于返回码信息存储,创建当前连接文件描述符fd与当前连接正在传送的文件头信息fileinfo的map<fd,fileinfo>映射。接着开始接收发送端的请求在接收到一定量的数据后(比如接收次数达到一万次或接收数据达到100MB等),处理该fd已经接收的数据。首先判断fd是否存在map<fd,fileinfo>里,没有的话,说明是新接收的文件,这时再判断已经接收的数据长度是否大于文件头fileinfo的长度,小于则继续接收,大于或等于则读取文件头信息,并确定所述文件头的长度。再判断当前接收的数据长度是否达到整个文件大小filesize,达到则取出filesize大小的数据,和fileinfo信息合并,并将fileinfo里的块类型设置为all(即完整块的意思)然后写至文件数据共享内存。所述写入文件数据共享内存的数据块还可以是起始块或中间快。具体的,参考图8,
获取到起始数据块的过程包括:
步骤S700,若未达到,则判断所接收到的数据的长度是否大于预设长度;
步骤S800,在所接收到的数据的长度大于预设长度时,从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;
步骤S900,将合并后的数据的类型设置为起始块写至文件数据共享内存保存;
步骤S101,若所接收到的数据的长度小于预设长度时,继续接收发送端发送的数据。
具体的,若无达到filesize长度,再判断是否满足一个最大块大小(BLOCK_LEN,预先设定的值,比如32MB),满足则将该fd与对应fileinfo信息添加至map<fd,fileinfo>,取出BLOCK_LEN大小的数据,和fileinfo信息合并,并将fileinfo里的块类型设置为head(即起始块)写至共享内存,不满足则继续接收。
参考图9,获取到中间数据块的过程包括:
步骤S102,若存储所接收到的数据,则判断所接收到的数据的长度是否大于该文件剩余未接收到的数据长度;
步骤S103,若所接收到的数据的长度大于该文件剩余未接收到的数据长度,则在共享内存中删除所述数据的结点信息;
步骤S104,若所接收到的数据的长度小于该文件剩余未接收到的数据长度,则从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;
步骤S105,将合并后的数据的类型设置为中间块写至文件数据共享内存保存。
如果该fd存在于map<fd,fileinfo>,则说明之前已经有接收处理过(有部分块已经写入共享内存),这时判断已经接收的数据长度是否大或等于当前该文件剩余的长度wait_len,是则在map<fd,fileinfo>删除此fd结点信息,取出wait_len大小的数据,和fileinfo信息合并,并将块类型设置为tail(即结束块)写至共享内存。小于wait_len,再判断是否满足一个最大块大小BLOCK_LEN大小,满足则取出BLOCK_LEN大小的数据,和fileinfo信息合并,块类型设置为middle(即中间块)写至共享内存,不满足则继续接收数据。接收进程会读取返回码信息共享内存,返回文件最终是否成功失败信息给数据发送方。
参考图10,判断是否成功失败信息生成返回码信息的过程包括:
步骤S201,从共享内存中读取数据,解析文件头,判断数据类型;
步骤S202,根据数据类型对所读取的数据进行相应处理,校验所读取数据是否为正确数据并生成成功失败信息写返回码信息至共享内存,以将所述返回码信息发送至所述发送端。
具体的,参考图11,落地进程启动后,会读取文件数据共享内存,从共享内存取出一份数据,解析文件头,判断块类型。当块类型为all,直接新建写文件,并校验,将成功失败信息写返回码信息共享内存。为head,新建文件,写数据。为middle,打开文件,追加数据。为tail,打开文件,追加数据,并校验,将成功失败信息写返回码信息共享内存,以供从所述返回码信息共享内存读取失败成功返回码信息发送至发送端,以返回文件是否发送成功。本实施例通过将数据接收和分析分开处理,进一步提高数据传输效率。
对应地,基于上述方法各个实施例,提出本发明数据排序装置的较佳实施例。参考图12,所述数据排序装置包括获取模块10、处理模块20、建立模块30及传输模块40。
所述获取模块10,用于获取待发送文件;
所述处理模块20,用于将所述待发送文件按照预设方式分为多个数据块;
在本实施例中,在数据通道中,需要在机器间传输数据时,获取待发送文件,启动发送进程,循环读取所要发送的目录文件,将所述待发送文件按照预设方式分为多个数据块,所述预设方式包括按照文件的数据量、长度进行划分。
所述建立模块30,用于构建所述数据块的文件头信息,并建立与接收端的通信连接;
在循环到需要发送的目录文件,且划分为多个数据块后,构建所读取文件的文件头信息,所述文件头信息包括但不限于文件数据校验码、文件大小等(参考图3)。文件头信息包括数据块类型,在这里,数据块类型值可不设置,也可以直接设置为all(完整块)。将构建的文件头信息与数据块拼接,形成拼接后的数据以供发送至接收端机器。然后与接收端及其建立通信连接,判断所述通信连接是否建立成功,例如,通过检测数据包的形式检测是否建立成功或采取其他常用的方式进行连接建立成功的测试。所述通信连接优选为sockettcp连接,提高所述通信连接建立的稳定性。
所述传输模块40,用于基于所建立的通信连接将所述多个数据块发送至所述接收端。
在建立与所述接收端机器的通信连接后,将数据发送,后面再接收返回码信息,判断文件发送成功或失败。具体的,参考图13,所述数据传输装置还包括:接收模块50和判断模块60,
所述接收模块50,用于在将所述多个数据块发送至所述接收端后,接收所述接收端的返回码信息;所述判断模块60,用于根据所述返回码信息判断所述数据块是否发送成功;所述传输模块40,还用于在所述数据块发送失败时,重新向所述接收端发送所述发送失败的数据块。在数据发送失败时,继续发送未发送成功的数据,或在所有数据均未发送成功时,检查所述通信连接是否断开或者网络出现问题,以及时将需要传送的文件传送到接收端机器。
为了更好的描述本发明实施例,参考图5,数据发送过程包括:
1、读取文件;2、构造文件头信息,然后与文件数据拼接;3、与接收端建立socket连接,发送数据。
本实施例通过将待发送文件分为多个数据块,并建立与接收端的socket连接,使得数据传输不受系统限制,将数据块发送至接收端。使得数据传输不受系统环境限制,支持超大文件传输,提高了数据的传输效率。
进一步地,所述接收模块50,还用于接收发送端发送来的数据;
所述判断模块60,还用于在所接收到的数据的数据量大于预设数据量时,判断是否存储所接收到的数据;还用于若未存储所接收到的数据,则判断所接收到的数据长度是否大于文件头的长度,所述接收模块50,还用于若所接收到的数据长度小于文件头的长度,则继续接收发送端发送来的数据块;
所述处理模块20,还用于若所接收到的数据长度大于文件头的长度,则确定所接收到的数据的文件头信息;
所述判断模块60,还用于根据所述文件头信息,判断所接收到的数据的长度是否达到整个文件的长度;
所述处理模块20,还用于若达到,则读取与所述整个文件的长度对应的数据和文件头信息合并,且将合并后的数据的类型设置为完整块写至文件数据共享内存保存。
在本实施例中,参考图7,需要接收发送端发送的数据时,接收进程启动,申请两块共享内存一块用于文件数据存储,一块用于返回码信息存储,创建当前连接文件描述符fd与当前连接正在传送的文件头信息fileinfo的map<fd,fileinfo>映射。接着开始接收发送端的请求在接收到一定量的数据后(比如接收次数达到一万次或接收数据达到100MB等),处理该fd已经接收的数据。首先判断fd是否存在map<fd,fileinfo>里,没有的话,说明是新接收的文件,这时再判断已经接收的数据长度是否大于文件头fileinfo的长度,小于则继续接收,大于或等于则读取文件头信息,并确定所述文件头的长度。再判断当前接收的数据长度是否达到整个文件大小filesize,达到则取出filesize大小的数据,和fileinfo信息合并,并将fileinfo里的块类型设置为all(即完整块的意思)然后写至文件数据共享内存。所述写入文件数据共享内存的数据块还可以是起始块或中间快。
进一步地,所述判断模块60,还用于若未达到,则判断所接收到的数据的长度是否大于预设长度;
所述处理模块20,还用于在所接收到的数据的长度大于预设长度时,从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;还用于将合并后的数据的类型设置为起始块写至文件数据共享内存保存;
所述接收模块50,还用于若所接收到的数据的长度小于预设长度时,继续接收发送端发送的数据。
具体的,若无达到filesize长度,再判断是否满足一个最大块大小(BLOCK_LEN,预先设定的值,比如32MB),满足则将该fd与对应fileinfo信息添加至map<fd,fileinfo>,取出BLOCK_LEN大小的数据,和fileinfo信息合并,并将fileinfo里的块类型设置为head(即起始块)写至共享内存,不满足则继续接收。
进一步地,所述判断模块60,还用于若存储所接收到的数据,则判断所接收到的数据的长度是否大于该文件剩余未接收到的数据长度;
所述处理模块20,还用于若所接收到的数据的长度大于该文件剩余未接收到的数据长度,则在共享内存中删除所述数据的结点信息;还用于若所接收到的数据的长度小于该文件剩余未接收到的数据长度,则从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;还用于将合并后的数据的类型设置为中间块写至文件数据共享内存保存。
如果该fd存在于map<fd,fileinfo>,则说明之前已经有接收处理过(有部分块已经写入共享内存),这时判断已经接收的数据长度是否大或等于当前该文件剩余的长度wait_len,是则在map<fd,fileinfo>删除此fd结点信息,取出wait_len大小的数据,和fileinfo信息合并,并将块类型设置为tail(即结束块)写至共享内存。小于wait_len,再判断是否满足一个最大块大小BLOCK_LEN大小,满足则取出BLOCK_LEN大小的数据,和fileinfo信息合并,块类型设置为middle(即中间块)写至共享内存,不满足则继续接收数据。接收进程会读取返回码信息共享内存,返回文件最终是否成功失败信息给数据发送方。
进一步地,参考图14,所述数据传输装置还包括检验模块70及生成模块80,
所述处理模块20,还用于从共享内存中读取数据,解析文件头,判断数据类型;
所述校验模块70,还用于根据数据类型对所读取的数据进行相应处理,校验所读取数据是否为正确数据;
所述生成模块80,还用于生成成功失败信息写返回码信息至共享内存,以将所述返回码信息发送至所述发送端。
具体的,参考图11,落地进程启动后,会读取文件数据共享内存,从共享内存取出一份数据,解析文件头,判断块类型。当块类型为all,直接新建写文件,并校验,将成功失败信息写返回码信息共享内存。为head,新建文件,写数据。为middle,打开文件,追加数据。为tail,打开文件,追加数据,并校验,将成功失败信息写返回码信息共享内存,以供从所述返回码信息共享内存读取失败成功返回码信息发送至发送端,以返回文件是否发送成功。
本实施例通过将数据接收和分析分开处理,进一步提高数据传输效率。
根据本发明实施例的另一个方面,还提供了一种数据传输方法的服务器或终端(也即电子装置)。
可选地,可将本申请的数据传输装置设置在上述的服务器或者终端上。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据传输方法的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;
构建所述数据块的文件头信息,并建立与接收端的通信连接;
基于所建立的通信连接将所述多个数据块发送至所述接收端。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

Claims (12)

1.一种数据传输方法,其特征在于,包括:
获取待发送文件,将所述待发送文件按照预设方式分为多个数据块;
构建所述数据块的文件头信息,并建立与接收端的通信连接;
基于所建立的通信连接将所述多个数据块发送至所述接收端;
其中,所述方法还包括:
接收发送端发送来的数据;
在所接收到的数据的数据量大于预设数据量时,判断是否存储所接收到的数据;
若未存储所接收到的数据,则判断所接收到的数据长度是否大于文件头的长度,若所接收到的数据长度小于文件头的长度,则继续接收发送端发送来的数据块;
若所接收到的数据长度大于文件头的长度,则确定所接收到的数据的文件头信息;
其中,所述确定所接收到的数据的文件头信息的步骤之后,还包括:
根据所述文件头信息,判断所接收到的数据的长度是否达到整个文件的长度;
若达到,则读取与所述整个文件的长度对应的数据和文件头信息合并,且将合并后的数据的类型设置为完整块写至文件数据共享内存保存。
2.如权利要求1所述的数据传输方法,其特征在于,所述将所述多个数据块发送至所述接收端的步骤之后,还包括:
在将所述多个数据块发送至所述接收端后,接收所述接收端的返回码信息;
根据所述返回码信息判断所述数据块是否发送成功;
在所述数据块发送失败时,重新向所述接收端发送所述发送失败的数据块。
3.如权利要求1所述的数据传输方法,其特征在于,所述判断所接收到的数据的长度是否达到整个文件的长度的步骤之后,还包括:
若未达到,则判断所接收到的数据的长度是否大于预设长度;
在所接收到的数据的长度大于预设长度时,从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;
将合并后的数据的类型设置为起始块写至文件数据共享内存保存;
若所接收到的数据的长度小于预设长度时,继续接收发送端发送的数据。
4.如权利要求1所述的数据传输方法,其特征在于,所述判断是否存储所接收到的数据的步骤之后,还包括:
若存储所接收到的数据,则判断所接收到的数据的长度是否大于该文件剩余未接收到的数据长度;
若所接收到的数据的长度大于该文件剩余未接收到的数据长度,则在共享内存中删除所述数据的结点信息;
若所接收到的数据的长度小于该文件剩余未接收到的数据长度,则从所接收到的数据中提取预设长度的数据与所述文件头信息合并;
将合并后的数据的类型设置为中间块写至文件数据共享内存保存。
5.如权利要求2所述的数据传输方法,其特征在于,所述接收发送端发送来的数据的步骤之后,还包括:
从共享内存中读取数据,解析文件头,判断数据类型;
根据数据类型对所读取的数据进行相应处理,校验所读取数据是否为正确数据并生成成功失败信息写返回码信息至共享内存,以将所述返回码信息发送至所述发送端。
6.一种数据传输装置,其特征在于,包括:
获取模块,用于获取待发送文件;
处理模块,用于将所述待发送文件按照预设方式分为多个数据块;
建立模块,用于构建所述数据块的文件头信息,并建立与接收端的通信连接;
传输模块,用于基于所建立的通信连接将所述多个数据块发送至所述接收端;
接收模块,用于接收发送端发送来的数据;
判断模块,用于在所接收到的数据的数据量大于预设数据量时,判断是否存储所接收到的数据;
所述判断模块,还用于若未存储所接收到的数据,则判断所接收到的数据长度是否大于文件头的长度;
所述接收模块,还用于若所接收到的数据长度小于文件头的长度,则继续接收发送端发送来的数据块;
所述处理模块,还用于若所接收到的数据长度大于文件头的长度,则确定所接收到的数据的文件头信息;
所述判断模块,还用于根据所述文件头信息,判断所接收到的数据的长度是否达到整个文件的长度;
所述处理模块,还用于若达到,则读取与所述整个文件的长度对应的数据和文件头信息合并,且将合并后的数据的类型设置为完整块写至文件数据共享内存保存。
7.如权利要求6所述的数据传输装置,其特征在于,所述接收模块,还用于在将所述多个数据块发送至所述接收端后,接收所述接收端的返回码信息;
所述判断模块,用于根据所述返回码信息判断所述数据块是否发送成功;
所述传输模块,还用于在所述数据块发送失败时,重新向所述接收端发送所述发送失败的数据块。
8.如权利要求6所述的数据传输装置,其特征在于,所述判断模块,还用于若未达到,则判断所接收到的数据的长度是否大于预设长度;
所述处理模块,还用于在所接收到的数据的长度大于预设长度时,从所接收到的数据中提取所述预设长度的数据与所述文件头信息合并;还用于将合并后的数据的类型设置为起始块写至文件数据共享内存保存;
所述接收模块,还用于若所接收到的数据的长度小于预设长度时,继续接收发送端发送的数据。
9.如权利要求6所述的数据传输装置,其特征在于,所述判断模块,还用于若存储所接收到的数据,则判断所接收到的数据的长度是否大于该文件剩余未接收到的数据长度;
所述处理模块,还用于若所接收到的数据的长度大于该文件剩余未接收到的数据长度,则在共享内存中删除所述数据的结点信息;还用于若所接收到的数据的长度小于该文件剩余未接收到的数据长度,则从所接收到的数据中提取预设长度的数据与所述文件头信息合并;还用于将合并后的数据的类型设置为中间块写至文件数据共享内存保存。
10.如权利要求6所述的数据传输装置,其特征在于,所述处理模块,还用于从共享内存中读取数据,解析文件头,判断数据类型;
校验模块,用于根据数据类型对所读取的数据进行相应处理,校验所读取数据是否为正确数据;
生成模块,用于生成成功失败信息写返回码信息至返回码信息共享内存,以将所述返回码信息发送至所述发送端。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至5任一项中所述的方法。
12.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至5任一项中所述的方法。
CN201510307064.0A 2015-06-05 2015-06-05 数据传输方法及装置 Active CN106302604B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510307064.0A CN106302604B (zh) 2015-06-05 2015-06-05 数据传输方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510307064.0A CN106302604B (zh) 2015-06-05 2015-06-05 数据传输方法及装置

Publications (2)

Publication Number Publication Date
CN106302604A CN106302604A (zh) 2017-01-04
CN106302604B true CN106302604B (zh) 2020-09-11

Family

ID=57659718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510307064.0A Active CN106302604B (zh) 2015-06-05 2015-06-05 数据传输方法及装置

Country Status (1)

Country Link
CN (1) CN106302604B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107340976A (zh) * 2017-07-14 2017-11-10 郑州云海信息技术有限公司 一种元数据存储方法及系统
CN110149803B (zh) * 2018-08-27 2023-06-09 深圳市锐明技术股份有限公司 数据存储方法、系统及终端设备
CN110933024A (zh) * 2019-10-18 2020-03-27 苏州浪潮智能科技有限公司 应用于交换机数据传输的方法、系统、接收端和发送端
CN111031536A (zh) * 2019-12-26 2020-04-17 大连市共进科技有限公司 烧录文件传输方法、装置和5g小基站烧录设备
CN112532724A (zh) * 2020-11-27 2021-03-19 上海爱数信息技术股份有限公司 一种文件传输系统及其方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103916440A (zh) * 2013-01-05 2014-07-09 尼尔森网联媒介数据服务有限公司 一种远程升级的方法及其装置
CN104092780A (zh) * 2014-07-29 2014-10-08 中国联合网络通信集团有限公司 基于文件分块的文件修改方法、单文件同步方法及装置
CN104519090A (zh) * 2013-09-27 2015-04-15 深圳市腾讯计算机系统有限公司 文件传输方法及装置
CN104639298A (zh) * 2013-11-08 2015-05-20 腾讯科技(深圳)有限公司 一种数据传输方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103916440A (zh) * 2013-01-05 2014-07-09 尼尔森网联媒介数据服务有限公司 一种远程升级的方法及其装置
CN104519090A (zh) * 2013-09-27 2015-04-15 深圳市腾讯计算机系统有限公司 文件传输方法及装置
CN104639298A (zh) * 2013-11-08 2015-05-20 腾讯科技(深圳)有限公司 一种数据传输方法、装置及系统
CN104092780A (zh) * 2014-07-29 2014-10-08 中国联合网络通信集团有限公司 基于文件分块的文件修改方法、单文件同步方法及装置

Also Published As

Publication number Publication date
CN106302604A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN106302604B (zh) 数据传输方法及装置
CN107766190B (zh) 接口测试方法、装置、计算机设备和存储介质
CN107844421B (zh) 接口测试方法、装置、计算机设备和存储介质
CN107656874B (zh) 一种接口测试方法、装置、模拟挡板及系统
CN106936441B (zh) 一种数据压缩方法和装置
CN111683066B (zh) 异构系统集成方法、装置、计算机设备和存储介质
CN106484611B (zh) 基于自动化协议适配的模糊测试方法和装置
JP2009116630A (ja) ウェブ画面の共有システム、その共有用端末機およびその共有プログラム
JP4193196B1 (ja) Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム
CN104079623B (zh) 多级云存储同步控制方法及系统
CN113268245A (zh) 代码分析方法、装置及存储介质
CN101388039A (zh) 一种响应消息的执行方法和装置
CN111597559A (zh) 系统命令注入漏洞检测方法和装置、设备及存储介质
CN104570967A (zh) 基于Android系统的远程控制方法及系统
CN115269117A (zh) 一种资源创建方法、装置、计算机设备及存储介质
CN109086145B (zh) 数据生成方法、装置及计算机存储介质
CN113986828A (zh) 存储海量文件的方法、装置、电子设备及存储介质
CN114297014A (zh) 一种app动态缓存设备的性能测试方法及系统
CN114374745A (zh) 一种协议格式的处理方法及系统
KR102433764B1 (ko) 서비스 모니터링 시스템 및 방법
CN117596256B (zh) 数据同步方法、装置、系统、电子设备及可读存储介质
JP2015072531A (ja) テスト支援方法、テスト支援装置およびプログラム
CN114979300B (zh) 一种客户端的多种服务通信方法及装置
JP5243474B2 (ja) インフラミドルウェアのパラメータ値改善点提示システム
JP5941823B2 (ja) 整合性確認方法およびシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211227

Address after: 16F, Kungang science and technology building, 777 Huancheng South Road, Xishan District, Kunming, Yunnan 650100

Patentee after: Yunnan Tengyun Information Industry Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.