数据发送装置、数据接收装置、终端和数据传输方法

文档序号:7889193阅读:214来源:国知局
专利名称:数据发送装置、数据接收装置、终端和数据传输方法
技术领域
本发明涉及数据传输技术领域,具体而言,涉及一种数据发送装置、一种数据接收装置、一种终端和一种数据传输方法。
背景技术
在相关技术中,在终端之间进行数据传输时,比如利用蓝牙、红外等方式进行文件传输,特别是大文件传输时,若通过单线程来进行数据传输的,则存在带宽利用率不高,网络达不到最大负载的问题,那么,在终端之间进行数据传输时,特别是大文件传输时,传输速率达不到最大可传输速率,这样,会增加数据传输的时间,消耗用户的耐心,使用户得不到好的体验,若采用多线程来进行数据传输,则存在过度占用系统资源的问题,反而造成系统缓慢等现象,同时无法使用户得到良好的使用体验。因此,需要一种新的数据传输技术,可以充分利用网络资源,提高数据传输速度。

发明内容
本发明正是基于上述问题,提出了一种新的数据传输技术,可以充分利用网络资源,提高数据传输速度。有鉴于此,本发明提出了一种数据发送装置,包括:协议确认单元,根据所述数据发送装置与数据接收装置之间采用的连接方式,确认对应的通信协议,并获取对应于所述通信协议的最大传输单元;数据分割单元,若待传输数据小于或等于所述最大传输单元的值,将所述待传输数据作为待传输数据块,若所述待传输数据大于所述最大传输单元的值,则按照所述最大传输单元的值分割所述待传输数据,得到多个待传输数据块;线程建立单元,在所述数据发送装置与所述数据接收装置之间建立至少一个传输线程,所述传输线程的数量对应于所述待传输数据块;数据块发送单元,将所述待传输数据块通过所述传输线程传输至所述数据接收装置。`在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。在上述技术方案中,优选地,所述线程建立单元还用于:在所述数据发送装置与所述数据接收装置之间建立至少一个控制线程,所述控制线程将来自所述数据发送装置的辅助参数发送至所述数据接收装置。在该技术方案中,数据块的传输是采用的传输线程,而在数据传输之前或其过程中,需要一些辅助参数进行数据传输的辅助作用,比如待传输数据的名称、长度等,用于使数据接收装置能够确认接收到的数据,而数据块的数量、大小等,则用于确认需要建立的传输线程的数量,使得数据块的传输能够顺利进行。在上述技术方案中,优选地,所述辅助参数包括:所述待传输数据的名称、长度、所述待传输数据块的数量、大小和/或所述传输线程的数量。在上述技术方案中,优选地,所述线程建立单元具体包括:连接建立子单元,在所述数据发送装置和所述数据接收装置之间建立socket连接;线程开启子单元,在所述连接建立子单元完成所述socket连接的建立后,开启所述控制线程和/或所述传输线程。在该技术方案中,可以采用socket连接来实现数据块或辅助参数的传输,也就是传输线程或控制线程均可以采用socket方式进行建立,即在数据发送装置和数据接收装置之间实现socket连接后,开启对应的线程,从而实现线程的建立。根据本发明的又一方面,还提出了一种数据接收装置,包括:数据接收单元,通过与数据发送装置之间建立的至少一个传输线程,接收来自所述数据发送装置的待传输数据块,以及接收对应于每个所述待传输数据块的标识;数据块写入单元,根据所述数据接收单元接收到的所述待传输数据块的标识,将对应的待传输数据块写入待生成文件;状态设置单元,将完成了所述数据块写入单元的写入过程的待传输数据块的标识设置为完成状态;状态判断单元,检测所有的所述待传输数据块的标识,判断是否存在未被设置为所述完成状态的待传输数据块的标识;状态反馈单元,在所述状态判断单元的判断结果为是的情况下,将未被设置为所述完成状态的待传输数据块的标识及失败信号反馈至所述数据发送装置,由所述数据发送装置重新发送对应的待传输数据块;结果确认单元,若所述状态判断单元的判断结果为否,则将所述待生成文件作为传输结果。在该技术方案中,这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件 ,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置重新进行发送对应的待传输数据块,直至检测不到false。在上述技术方案中,优选地,还包括:数据截取单元,在所述数据接收单元接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从所述最后一个数据块中按照预设路径截取对应于所述实际数据大小的数据块,作为最后一个所述待传输数据块,其中,s为所述实际数据大小,t为所述待传输数据的总大小,b为所述最大传输单元的值,n为所述待传输数据的数量。在该技术方案中,由于每次进行传输时的待传输数据的大小不定,因此,在完成切割后,最后一个待传输数据块的大小可能小于最大传输单元,但进行传输时,仍然是按照最大传输单元的大小进行传输,从而导致数据接收装置接收到的数据中,包含有待传输数据以及其他的无用数据,此时需要由数据接收装置对接收到的最后一个数据进行处理,获取其中的有用数据,即最后一个待传输数据块。而在接收到的数据块中,往往是从一端开始为待传输数据块,而该端口往往是固定的,因而可以通过上述公式计算出待传输数据块的大小之后,按照预设的方向从接收到的数据块中截取相应大小的数据,即为最后一个待传输数据块。根据本发明的又一方面,还提出了一种终端,包括:如上述技术方案所述的数据发送装置;和/或如上述技术方案所述的数据接收装置。在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割 得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置重新进行发送对应的待传输数据块,直至检测不到false。在上述技术方案中,优选地,包括:所述数据发送装置通过有线或无线方式连接至所述数据接收装置。在该技术方案中,无论是有线的数据传输方式,还是蓝牙、红外等无线的数据传输方式,都可以应用于本发明的技术方案。根据本发明的又一方面,还提出了一种数据传输方法,包括:步骤402,数据发送装置与数据接收装置之间通过有线或无线方式进行连接;步骤404,根据采用的连接方式,确认对应的通信协议,并获取对应于所述通信协议的最大传输单元;步骤406,若待传输数据小于或等于所述最大传输单元的值,将所述待传输数据作为待传输数据块,若所述待传输数据大于所述最大传输单元的值,则按照所述最大传输单元的值分割所述待传输数据,得到多个待传输数据块;步骤408,在所述数据发送装置与所述数据接收装置之间建立至少一个传输线程,所述传输线程的数量对应于所述待传输数据块;步骤410,所述数据发送装置将所述待传输数据块通过所述传输线程传输至所述数据接收装置。在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。在上述技术方案中,优选地,在所述步骤408之前,还包括:在所述数据发送装置与所述数据接收装置之间建立至少一个控制线程,用于由所述数据发送装置将辅助参数发送至所述数据接收装置。在该技术方案中,数据块的传输是采用的传输线程,而在数据传输之前或其过程中,需要一些辅助参数进行数据传输的辅助作用,比如待传输数据的名称、长度等,用于使数据接收装置能够确认接收到的数据,而数据块的数量、大小等,则用于确认需要建立的传输线程的数量,使得数据块的传输能够顺利进行。在上述技术方案中,优选地,所述辅助参数包括:所述待传输数据的名称、长度、所述待传输数据块的数量、大小和/或所述传输线程的数量。在上述技术方案中,优选地,所述步骤410还包括:将每个所述待传输数据块的标识通过对应的传输线程传输至所述数据接收装置;在所述步骤410之后,还包括:所述数据接收装置根据所述待传输数据块的标识将对应的待传输数据块写入待生成文件,并将完成了该写入过程的待传输数据块的标识设置为完成状态;以及若存在没有被设置为所述完成状态的待传输数据块的·标识,则由所述数据发送装置重新发送对应的待传输数据块,若不存在,则将所述待生成文件作为传输结果。在该技术方案中,这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置重新进行发送对应的待传输数据块,直至检测不到false。在上述技术方案中,优选地,所述步骤410还包括:在所述数据接收装置接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从所述最后一个数据块中按照预设路径截取对应于所述实际数据大小的数据块,作为最后一个所述待传输数据块,其中,s为所述实际数据大小,t为所述待传输数据的总大小,b为所述最大传输单元的值,n为所述待传输数据的数量。在该技术方案中,由于每次进行传输时的待传输数据的大小不定,因此,在完成切割后,最后一个待传输数据块的大小可能小于最大传输单元,但进行传输时,仍然是按照最大传输单元的大小进行传输,从而导致数据接收装置接收到的数据中,包含有待传输数据以及其他的无用数据,此时需要由数据接收装置对接收到的最后一个数据进行处理,获取其中的有用数据,即最后一个待传输数据块。而在接收到的数据块中,往往是从一端开始为待传输数据块,而该端口往往是固定的,因而可以通过上述公式计算出待传输数据块的大小之后,按照预设的方向从接收到的数据块中截取相应大小的数据,即为最后一个待传输数据块。在上述技术方案中,优选地,还包括:在所述数据发送装置和所述数据接收装置之间建立socket连接之后,开启所述控制线程和/或所述传输线程。在该技术方案中,可以采用socket连接来实现数据块或辅助参数的传输,也就是传输线程或控制线程均可以采用socket方式进行建立,即在数据发送装置和数据接收装置之间实现socket连接后,开启对应的线程,从而实现线程的建立。通过以上技术方案,可以充分利用网络资源,提高数据传输速度。


图1示出了根据本发明的实施例的数据发送装置的框图;图2示出了根据本发明的实施例的数据接收装置的框图;图3示出了根据本发明的实施例的终端的框图;图4示出了根据本发明的实施例的数据传输方法的流程图;图5示出了根据本发明的实施例的数据传输的具体流程图。
具体实施例方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图1示出了根据本发明的实施例的数据发送装置的框图。如图1所示,根据本发明的实施例的数据发送装置100,包括:协议确认单元102,根据数据发送装置100与数据接收装置之间采用的连接方式,确认对应的通信协议,并获取对应于通信协议的最大传输单元;数据分割单元104,若待传输数据小于或等于最大传输单元的值,将待传输数据作为待传输数据块,若待传输数据大于最大传输单元的值,则按照最大传输单元的值分割待传输数据,得到多个待传输数据块;线程建立单元106,在数据发送装置100与数据接收装置之间建立至少一个传输线程,传输线程的数量对应于待传输数据块;数据块发送单元108,将待传输数据块通过传输线程传输至数据接收装置。在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。在上述技术方案中,线程建立单元106还用于:在数据发送装置100与数据接收装置之间建立至少一个控制线程,控制线程将来自数据发送装置100的辅助参数发送至数据接收装置。在该技术方案中,数据块的传输是采用的传输线程,而在数据传输之前或其过程中,需要一些辅助参数进行数据传输的辅助作用,比如待传输数据的名称、长度等,用于使数据接收装置能够确认接收到的数据,而数据块的数量、大小等,则用于确认需要建立的传输线程的数量,使得数据块的传输能够顺利进行。在上述技术方案中,辅助参数包括:待传输数据的名称、长度、待传输数据块的数量、大小和/或传输线程的数量。在上述技术方案中,线程建立单元106具体包括:连接建立子单元1062,在数据发送装置100和数据接收装置之间建立socket连接;线程开启子单元1064,在连接建立子单元1062完成socket连接的建立后,开启控制线程和/或传输线程。在该技术方案中,可以采用socket连接来实现数据块或辅助参数的传输,也就是传输线程或控制线程均可以采用socket方式进行建立,即在数据发送装置100和数据接收装置之间实现socket连接后,开启对应的线程,从而实现线程的建立。图2示出了根据本发明的实施例的数据接收装置的框图。如图2所示,根据本发明的实施例的数据接收装置200,包括:数据接收单元202,通过与数据发送装置之间建立的至少一个传输线程,接收来自数据发送装置的待传输数据块,以及接收对应于每 个待传输数据块的标识;数据块写入单元204,根据数据接收单元202接收到的待传输数据块的标识,将对应的待传输数据块写入待生成文件;状态设置单元206,将完成了数据块写入单元204的写入过程的待传输数据块的标识设置为完成状态;状态判断单元208,检测所有的待传输数据块的标识,判断是否存在未被设置为完成状态的待传输数据块的标识;状态反馈单元210,在状态判断单元208的判断结果为是的情况下,将未被设置为完成状态的待传输数据块的标识及失败信号反馈至数据发送装置,由数据发送装置重新发送对应的待传输数据块;结果确认单元212,若状态判断单元208的判断结果为否,则将待生成文件作为传输结果。在该技术方案中,这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置200中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置重新进行发送对应的待传输数据块,直至检测不到false。
在上述技术方案中,还包括:数据截取单元214,在数据接收单元202接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从最后一个数据块中按照预设路径截取对应于实际数据大小的数据块,作为最后一个待传输数据块,其中,s为实际数据大小,t为待传输数据的总大小,b为最大传输单元的值,n为待传输数据的数量。在该技术方案中,由于每次进行传输时的待传输数据的大小不定,因此,在完成切割后,最后一个待传输数据块的大小可能小于最大传输单元,但进行传输时,仍然是按照最大传输单元的大小进行传输,从而导致数据接收装置200接收到的数据中,包含有待传输数据以及其他的无用数据,此时需要由数据接收装置200对接收到的最后一个数据进行处理,获取其中的有用数据,即最后一个待传输数据块。而在接收到的数据块中,往往是从一端开始至实际数据大小均为待传输数据块,且开始方向是一致的,如从首先接收到的一端开始,因而可以通过上述公式计算出待传输数据块的大小之后,按照预设的方向从接收到的数据块中截取相应大小的数据,即为最后一个待传输数据块。图3示出了根据本发明的实施例的终端的框图。如图3所示,根据本发明的实施例的终端300,包括如图1所示的数据发送装置100和如图2所示的数据接收装置200。数据发送装置100,包括:协议确认单元102,根据数据发送装置100与数据接收装置200 (显然,从逻辑上来说,应该是其他终端上的数据接收装置,下文中其他位置不再标出)之间采用的连接方式 ,确认对应的通信协议,并获取对应于通信协议的最大传输单元;数据分割单元104,若待传输数据小于或等于最大传输单元的值,将待传输数据作为待传输数据块,若待传输数据大于最大传输单元的值,则按照最大传输单元的值分割待传输数据,得到多个待传输数据块;线程建立单元106,在数据发送装置100与数据接收装置200之间建立至少一个传输线程,传输线程的数量对应于待传输数据块;数据块发送单元108,将待传输数据块通过传输线程传输至数据接收装置200。在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。在上述技术方案中,线程建立单元106还用于:在数据发送装置100与数据接收装置200之间建立至少一个控制线程,控制线程将来自数据发送装置100的辅助参数发送至数据接收装置200。在该技术方案中,数据块的传输是采用的传输线程,而在数据传输之前或其过程中,需要一些辅助参数进行数据传输的辅助作用,比如待传输数据的名称、长度等,用于使数据接收装置能够确认接收到的数据,而数据块的数量、大小等,则用于确认需要建立的传输线程的数量,使得数据块的传输能够顺利进行。在上述技术方案中,辅助参数包括:待传输数据的名称、长度、待传输数据块的数量、大小和/或传输线程的数量。在上述技术方案中,线程建立单元106具体包括:连接建立子单元1062,在数据发送装置100和数据接收装置200之间建立socket连接;线程开启子单元1064,在连接建立子单元1062完成socket连接的建立后,开启控制线程和/或传输线程。在该技术方案中,可以采用socket连接来实现数据块或辅助参数的传输,也就是传输线程或控制线程均可以采用socket方式进行建立,即在数据发送装置100和数据接收装置200之间实现socket连接后,开启对应的线程,从而实现线程的建立。数据接收装置200,包括:数据接收单元202,通过与数据发送装置100 (显然,从逻辑上来说,应该是其他终端上的数据发送装置,下文中其他位置不再标出)之间建立的至少一个传输线程,接收来自数据发送装置100的待传输数据块,以及接收对应于每个待传输数据块的标识;数据块写入单元204,根据数据接收单元202接收到的待传输数据块的标识,将对应的待传输数据块写入待生成文件;状态设置单元206,将完成了数据块写入单元204的写入过程的待传输数据块的标识设置为完成状态;状态判断单元208,检测所有的待传输数据块的标识,判断是否存在未被设置为完成状态的待传输数据块的标识;状态反馈单元210,在状态判断单元208的判断结果为是的情况下,将未被设置为完成状态的待传输数据块的标识及失败信号反馈至数据发送装置100,由数据发送装置100重新发送对应的待传输数据块;结果确认单元212,若状态判断单元208的判断结果为否,则将待生成文件作为传输结果。 在该技术方案中,这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置200中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置100重新进行发送对应的待传输数据块,直至检测不到false。在上述技术方案中,还包括:数据截取单元214,在数据接收单元202接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从最后一个数据块中按照预设路径截取对应于实际数据大小的数据块,作为最后一个待传输数据块,其中,s为实际数据大小,t为待传输数据的总大小,b为最大传输单元的值,n为待传输数据的数量。在该技术方案中,由于每次进行传输时的待传输数据的大小不定,因此,在完成切割后,最后一个待传输数据块的大小可能小于最大传输单元,但进行传输时,仍然是按照最大传输单元的大小进行传输,从而导致数据接收装置200接收到的数据中,包含有待传输数据以及其他的无用数据,此时需要由数据接收装置200对接收到的最后一个数据进行处理,获取其中的有用数据,即最后一个待传输数据块。而在接收到的数据块中,往往是从一端开始至实际数据大小均为待传输数据块,且开始方向是一致的,如从首先接收到的一端开始,因而可以通过上述公式计算出待传输数据块的大小之后,按照预设的方向从接收到的数据块中截取相应大小的数据,即为最后一个待传输数据块。图4示出了根据本发明的实施例的数据传输方法的流程图。如图4所示,根据本发明的实施例的数据传输方法,包括:步骤402,数据发送装置与数据接收装置之间通过有线或无线方式进行连接;步骤404,根据采用的连接方式,确认对应的通信协议,并获取对应于通信协议的最大传输单元;步骤406,若待传输数据小于或等于最大传输单元的值,将待传输数据作为待传输数据块,若待传输数据大于最大传输单元的值,则按照最大传输单元的值分割待传输数据,得到多个待传输数据块;步骤408,在数据发送装置与数据接收装置之间建立至少一个传输线程,传输线程的数量对应于待传输数据块;步骤410,数据发送装置将待传输数据块通过传输线程传输至数据接收装置。在该技术方案中,利用了最大传输单元(MTU,Maximum Transmission Unit),是指一种通信协议的某一层上面所能通过的最大数据包大小,那么,当进行传输的数据大于这个值时,就会影响到传输时的速度,而当传输的数据小于或等于这个值时,则可以在不影响传输速度的同时,最大可能地利用带宽资源,从而提升数据的传输速度。但传输的数据往往会大于最大传输单元,因此,可以将最大传输单元作为标准大小,对大于该值的数据进行切害!],从而保证最后进行传输的数据或数据块均小于或等于最大传输单元的值。另外,对于传输线程的数量,是与切割得到的数据块的数量相关的,这里的相关是指,可以预示设置好数据块数量与传输线程数量之间的对应关系,比如数据块小于或等于20个时,建立5个线程,数据块大于20个小于200个时,建立10个线程等,当然,也可以在数据块数量与传输线程数量之间建立一个关系式,然后根据每次得到的数据块的数量计算得到需要建立的传输线程的数量。在上述技术方案中,在步骤408之前,还包括:在数据发送装置与数据接收装置之间建立至少一个控制线程,用于由数据发送装置将辅助参数发送至数据接收装置。在该技术方案中,数据块的传输是采用的传输线程,而在数据传输之前或其过程中,需要一些辅助参数进行数据传输的辅助作用,比如待传输数据的名称、长度等,用于使数据接收装置能够确认接收到的数据,而数·据块的数量、大小等,则用于确认需要建立的传输线程的数量,使得数据块的传输能够顺利进行。在上述技术方案中,辅助参数包括:待传输数据的名称、长度、待传输数据块的数量、大小和/或传输线程的数量。在上述技术方案中,步骤410还包括:将每个待传输数据块的标识通过对应的传输线程传输至数据接收装置;在步骤410之后,还包括:数据接收装置根据待传输数据块的标识将对应的待传输数据块写入待生成文件,并将完成了该写入过程的待传输数据块的标识设置为完成状态;以及若存在没有被设置为完成状态的待传输数据块的标识,则由数据发送装置重新发送对应的待传输数据块,若不存在,则将待生成文件作为传输结果。在该技术方案中,这里的待传输数据块的标识可以是待传输数据块的ID等。通过对每个接收到的待传输数据块进行记录,可以了解是否已经接收到全部的待传输数据块,并已经将其写入待生成文件,以重新组合为最初的待传输数据。在具体操作时,可以通过多种方式实现对待传输数据块的标记、检测等,比如在最初时,可以根据接收到的待传输数据块的数量,在数据接收装置中建立对应数量大小的数组,并将该数组中的每个数上置为false。当接收到某个待传输数据块,并写入待生成文件后,将对应的待传输数据块的标识写入到数组中,并将对应位置的false置为true,因此,最后若检测不到false则说明全部完成,传输成功,若检测到false,则由数据发送装置重新进行发送对应的待传输数据块,直至检测不到false。在上述技术方案中,步骤410还包括:在数据接收装置接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从最后一个数据块中按照预设路径截取对应于实际数据大小的数据块,作为最后一个待传输数据块,其中,s为实际数据大小,t为待传输数据的总大小,b为最大传输单元的值,n为待传输数据的数量。在该技术方案中,由于每次进行传输时的待传输数据的大小不定,因此,在完成切割后,最后一个待传输数据块的大小可能小于最大传输单元,但进行传输时,仍然是按照最大传输单元的大小进行传输,从而导致数据接收装置接收到的数据中,包含有待传输数据以及其他的无用数据,此时需要由数据接收装置对接收到的最后一个数据进行处理,获取其中的有用数据,即最后一个待传输数据块。而在接收到的数据块中,往往是从一端开始至实际数据大小均为待传输数据块,且开始方向是一致的,如从首先接收到的一端开始,因而可以通过上述公式计算出待传输数据块的大小之后,按照预设的方向从接收到的数据块中截取相应大小的数据,即为最后一个待传输数据块。在上述技术方案中,还包括:在数据发送装置和数据接收装置之间建立socket连接之后,开启控制线程和/或传输线程。在该技术方案中,可以采用socket连接来实现数据块或辅助参数的传输,也就是传输线程或控制线程均可以采用socket方式进行建立,即在数据发送装置和数据接收装置之间实现socket连接后,开启对应的线程,从而实现线程
的建立。图5示出了根据本发明的实施例的数据传输的具体流程图。如图5所示,根据本发明的实施例的数据传输的具体流程如下:步骤502,在发送端,建立控制连接socket,并等待连接。这里发送端相当于建立一个服务器。步骤504,在接收端,建立控制socket,连接服务器,也就是连接至发送端建立的控制连接socket。步骤506,在发送端,根据实际情况,设置参数,这里的实际情况,包括采用的连接方式,使用的通信协议,对应的最大传输单元,待传输数据的名称、大小等,并产生对应的参数。同时,这里还将待传输数据与最大传输单元的值进行比较,若待传输数据的长度小于或等于最大传输单元的值,则直接进行传输,若待传输数据的长度大于最大传输单元的值,则以最大传输单元为单位长度进行切割,得到多个待传输数据块,那么这里的待传输数据块的数量、以及对应的应该建立的socket连接数量也是对应的参数。步骤508,在发送端,控制socket进行信息传输,统一双方的参数配置。这里是指由发送端将生成的参数,如上述采用的通信协议、待传输数据的命名、大小、待传输数据块的数量、需要建立的socket连接数等参数,发送至接收端,以统一参数,便于接收端对接收到的数据块进行检查 、重新生成整体数据。当然,由于各个参数的生成时间并不一致,因此各个参数的发送时间并不是一致的,存在先后顺序,而且也不一定按照本流程采用的流程顺序,这一点对于本领域的技术人员是显而易见的。
步骤510,在接收端,接收参数信息,得到文件长度、数据块大小、socket数量等。根据上一段的说明,这些参数并不是同时、一起获得的,而是存在一定的先后,也不一定按照本流程采用的流程顺序。步骤512,在发送端,根据上述步骤生成的参数,开启多个线程,并建立socket服务器,等待连接,这里的线程与之前建立的线程不同,是用于传输那些待传输数据块等的通道,且建立的数量是由生成的待传输数据块的数量决定的,比如预先设定待传输数据块的数量小于或等于20个时,建立5个线程,若大于20个且小于200个时,建立10个线程等等,可以事先建立类似的规则,当然,也可以采用预设一个计算公式,然后根据生成的待传输数据块的数量进行实时计算,得到应该建立的线程数量。步骤514,在接收端,根据参数,开启多个线程,并建立socket客户端,连接服务器。步骤516,在接收端,连接建立成功后,为每一个socket建立数据缓存区,这里的缓存区用于存储每个线程接收到的待传输数据块。步骤518,在发送端,由多个socket发送数据。由于每个待传输数据块的大小为最大传输单元,是单个线程的传输速度不受到限制的情况下能够传输的最大长度的数据,并且采用多线程传输,使得对网络带宽的充分利用,提升整体数据的传输速度。步骤520,在接收端,接收数据,即接收来自发送端的待传输数据,并存储在各个线程对应的数据缓存区中。

步骤522,在发送端,判断是否发送完成所有的待传输数据,若是,则进入步骤524,否则返回步骤518,继续进行发送。步骤524,在发送端,向接收端发送finishSend消息,以告知接收端,所有的待传输数据块均已发送完毕。步骤526,在接收端,判断接收到的数据是否为最后一个数据块,这一点可以根据是否接收到来自发送端的finishSend消息来进行判断,若是,则进入步骤528,否则进入步骤 530。步骤528,在接收端,得到最后一个数据块中的数据,这里采用s = t-bX (n-1)计算实际数据大小,并从最后一个数据块中按照预设路径截取对应于实际数据大小的数据块,作为最后一个待传输数据块,其中,s为实际数据大小,t为待传输数据的总大小,b为最大传输单元的值,n为待传输数据的数量。这里由于最后一个数据块的大小无法确定,随着整个数据的大小变化,其他数据块的大小一定等于最大传输单元的值,但最后一个数据块可能小于最大传输单元的值,但传输时仍然按照最大传输单元进行传输,比如最大传输单元为1000字节,而最后一个待传输数据块小于1000字节,那么在接收端接收到的1000字节的数据中,只有一部分是真正的待传输数据块,而另外的字节则是没用的,此时需要计算出真正的待传输数据块的大小,比如计算为300字节,那么其他的700字节为没用数据,则按照预设的规则,比如从接收到的数据的起始点开始,截取300字节的数据,即为实际需要的最后一个待传输数据块。步骤530,在接收端,根据ID将接收到的数据块写入待生成文件的相应位置。每个数据块都有其对应的ID,根据ID即可了解到数据块在原来数据中应该处的位置,并在接收端重新生成新的数据时,将该数据块重新写入对应的位置,从而完成对整个数据的重组。
步骤532,在接收端,判断是否存在发送失败的数据块,若存在,则进入步骤534,否则进入步骤538。这里进行判断的方式,比如可以对每个接收到的数据块的ID进行记录,并在该数据块被写入待生成文件的对应位置后,将对应的ID置为true,那么,通过查找没有被置为true的ID,便可以了解是否存在发送失败的数据块。另外,还可以在接收端,根据步骤510中接收到的数据块的数量,建立对应大小的一个数组,并将该数组中的各位均置为false。在接收到数据块并写入待生成文件的对应位置后,将对应的ID写入数组中,并将数组中对应的位置置为true,那么,最后通过查看false状态,即可了解到发送失败的数据块。步骤534,在发送端,若存在发送失败项,在将其重新发送,这里可以由接收端将未成功接收到的数据块的ID及失败信息一同发送至发送端,便于发送端进行辨识。步骤536,在接收端,重新接收失败项,并根据ID写入待生成文件中相应的位置。当然,此时还可以再次返回步骤532进行反复检查,直至接收到所有的数据块,并生成了整个数据文件。(图中未示出)步骤538,关闭socket连接,释放资源。在上述流程中,发送端和接收端包括手机、电脑、掌上电脑等各种终端,其中,发送端和接收端可以为相同的终端,也可以为不同的终端,且发送端与接收端之间采用有线或无线方式进行连接,如蓝牙、红外等。以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,采用单socket单线程进行数据传输,使得传输过程缓慢,因此,本发明提供了一种数据发送装置、一种数据接收装置、一种终端和一种数据传输方法,可以充分利用网络资源,提高数据传输速度。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应 包含在本发明的保护范围之内。
权利要求
1.一种数据发送装置,其特征在于,包括: 协议确认单元,根据所述数据发送装置与数据接收装置之间采用的连接方式,确认对应的通信协议,并获取对应于所述通信协议的最大传输单元; 数据分割单元,若待传输数据小于或等于所述最大传输单元的值,将所述待传输数据作为待传输数据块,若所述待传输数据大于所述最大传输单元的值,则按照所述最大传输单元的值分割所述待传输数据,得到多个待传输数据块; 线程建立单元,在所述数据发送装置与所述数据接收装置之间建立至少一个传输线程,所述传输线程的数量对应于所述待传输数据块; 数据块发送单元,将所述待传输数据块通过所述传输线程传输至所述数据接收装置。
2.根据权利要求1所述的数据发送装置,其特征在于,所述线程建立单元还用于: 在所述数据发送装置与所述数据接收装置之间建立至少一个控制线程,所述控制线程将来自所述数据发送装置的辅助参数发送至所述数据接收装置。
3.根据权利要求1或2所述的数据发送装置,其特征在于,所述线程建立单元具体包括: 连接建立子单元,在所述数据发送装置和所述数据接收装置之间建立socket连接; 线程开启子单元,在所述连接建立子单元完成所述socket连接的建立后,开启所述控制线程和/或所述传输线程。
4.一种数据接收装置, 其特征在于,包括: 数据接收单元,通过与数据发送装置之间建立的至少一个传输线程,接收来自所述数据发送装置的待传输数据块,以及接收对应于每个所述待传输数据块的标识; 数据块写入单元,根据所述数据接收单元接收到的所述待传输数据块的标识,将对应的待传输数据块写入待生成文件; 状态设置单元,将完成了所述数据块写入单元的写入过程的待传输数据块的标识设置为完成状态; 状态判断单元,检测所有的所述待传输数据块的标识,判断是否存在未被设置为所述完成状态的待传输数据块的标识; 状态反馈单元,在所述状态判断单元的判断结果为是的情况下,将未被设置为所述完成状态的待传输数据块的标识及失败信号反馈至所述数据发送装置,由所述数据发送装置重新发送对应的待传输数据块; 结果确认单元,若所述状态判断单元的判断结果为否,则将所述待生成文件作为传输结果。
5.根据权利要求4所述的数据接收装置,其特征在于,还包括: 数据截取单元,在所述数据接收单元接收到最后一个数据块之后,按照S =t-bX (n-1)计算实际数据大小,并从所述最后一个数据块中按照预设路径截取对应于所述实际数据大小的数据块,作为最后一个所述待传输数据块,其中,s为所述实际数据大小,t为所述待传输数据的总大小,b为所述最大传输单元的值,n为所述待传输数据的数量。
6.一种终端,其特征在于,包括: 如权利要求1至3中任一项所述的数据发送装置;和/或 如权利要求4或5所述的数据接收装置。
7.一种数据传输方法,其特征在于,包括: 步骤402,数据发送装置与数据接收装置之间通过有线或无线方式进行连接; 步骤404,根据采用的连接方式,确认对应的通信协议,并获取对应于所述通信协议的最大传输单元; 步骤406,若待传输数据小于或等于所述最大传输单元的值,将所述待传输数据作为待传输数据块,若所述待传输数据大于所述最大传输单元的值,则按照所述最大传输单元的值分割所述待传输数据,得到多个待传输数据块; 步骤408,在所述数据发送装置与所述数据接收装置之间建立至少一个传输线程,所述传输线程的数量对应于所述待传输数据块; 步骤410,所述数据发送装置将所述待传输数据块通过所述传输线程传输至所述数据接收装置。
8.根据权利要求7所述的数据传输方法,其特征在于,在所述步骤408之前,还包括: 在所述数据发送装置与所述数据接收装置之间建立至少一个控制线程,用于由所述数据发送装置将辅助参数发送至所述数据接收装置。
9.根据权利 要求7或8所述的数据传输方法,其特征在于,所述步骤410还包括: 将每个所述待传输数据块的标识通过对应的传输线程传输至所述数据接收装置; 在所述步骤410之后,还包括: 所述数据接收装置根据所述待传输数据块的标识将对应的待传输数据块写入待生成文件,并将完成了该写入过程的待传输数据块的标识设置为完成状态;以及 若存在没有被设置为所述完成状态的待传输数据块的标识,则由所述数据发送装置重新发送对应的待传输数据块,若不存在,则将所述待生成文件作为传输结果。
10.根据权利要求7或8所述的数据传输方法,其特征在于,所述步骤410还包括: 在所述数据接收装置接收到最后一个数据块之后,按照s = t-bX (n-1)计算实际数据大小,并从所述最后一个数据块中按照预设路径截取对应于所述实际数据大小的数据块,作为最后一个所述待传输数据块,其中,s为所述实际数据大小,t为所述待传输数据的总大小,b为所述最大传输单元的值,n为所述待传输数据的数量。
全文摘要
本发明提供了一种数据发送装置,包括协议确认单元,根据采用的连接方式,确认对应的通信协议及对应的最大传输单元;数据分割单元,若待传输数据小于或等于最大传输单元的值,将待传输数据作为待传输数据块,若待传输数据大于最大传输单元的值,则按照最大传输单元的值分割待传输数据,得到多个待传输数据块;线程建立单元,在数据发送装置与数据接收装置之间建立至少一个传输线程,传输线程的数量对应于待传输数据块;数据块发送单元,将待传输数据块通过传输线程传输至数据接收装置。相应地,本发明还提出了一种数据接收装置、一种终端和一种数据传输方法。通过本发明的技术方案,可以充分利用网络资源,提高数据传输速度。
文档编号H04L1/00GK103248452SQ201210029720
公开日2013年8月14日 申请日期2012年2月10日 优先权日2012年2月10日
发明者沈旭 申请人:宇龙计算机通信科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1