CN107094084B - 一种数据共享方法和装置 - Google Patents
一种数据共享方法和装置 Download PDFInfo
- Publication number
- CN107094084B CN107094084B CN201610089233.2A CN201610089233A CN107094084B CN 107094084 B CN107094084 B CN 107094084B CN 201610089233 A CN201610089233 A CN 201610089233A CN 107094084 B CN107094084 B CN 107094084B
- Authority
- CN
- China
- Prior art keywords
- data
- pdu
- buffer
- terminal
- target data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
- H04L47/365—Dynamic adaptation of the packet size
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
Abstract
本发明实施例提供了一种数据共享方法和装置,涉及无线通信技术领域,用以保证蓝牙数据能被快速、准确的在移动通信终端间实现共享,包括:第一终端建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;所述第一终端将接收到的目标数据包进行解析,获取目标数据;所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包;所述第一终端按照数据子段的先后顺序,依次将所述N个PDU数据包存储在所述第一BUFFER中;所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。本发明实施例应用于通信终端中。
Description
技术领域
本发明实施例涉及无线通信技术领域,尤其涉及一种数据共享方法和装置。
背景技术
蓝牙技术(Bluetooth)是以低成本的近距离(一般10米以内)无线电技术为基础的无线通信技术,能够有效地简化移动通信终端(例如,笔记本电脑,手机)之间的通信,也能够成功地简化移动通信终端与因特网(Internet)之间的通信,从而使得数据传输变得更加迅速高效,为无线通信拓宽道路。随着移动通信终端越来越智能化,人们对移动通信终端之间数据共享需求也大大提高,在蓝牙技术应用越来越普遍的同时,多个移动通信终端共享相同蓝牙数据(即将一个移动通信终端接收到的蓝牙数据共享给另外的移动通信终端)的需求不可避免。然而,出于连接方式、距离等因素的考虑,多个移动通信终端对相同蓝牙数据的需求或许不能全部通过蓝牙进行。
现有技术中,两个移动通信终端间数据共享通常采用硬件切换和usb ip方式;其中,硬件切换,是利用移动通信终端的硬件切换开关进行硬件资源的切换,以此实现当前端移动通信终端向对端移动通信终端共享数据;usb ip方式,是指两个移动通信终端先建立连接,然后再进行数据传输,即将待发送的蓝牙数据通过urb数据包的形式由当前端移动通信终端共享给对端的移动通信终端。
但是,硬件切换方式需要的成本更高,其次,采用硬件切换,每次切换共享方向时,两个移动通信终端都需要重新配对,繁琐且耗时。对于usb ip方式进行数据共享时,当前端移动通信终端通过蓝牙获取到需要向对端移动通信终端发送的蓝牙数据后,当前端不会对需要发送的蓝牙数据进行分析处理,而是直接将需要发送的蓝牙数据向对端移动通信终端传输,实现数据共享。这样的共享是以当前端将无法使用该笔蓝牙数据为代价的,即当前端和对端的移动通信终端将无法同时使用蓝牙数据,是单向牺牲的共享。此外,如果想要改变数据共享的方向,还需要切换移动通信终端usb模块的状态,重新进行移动通信终端之间的配对,不够便捷智能。
发明内容
本发明的实施例提供一种数据共享方法和装置,用以保证蓝牙数据能被快速、准确的在移动通信终端间实现共享。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种数据共享方法,所述方法包括:
第一终端建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
所述第一终端将接收到的目标数据包进行解析,获取目标数据;
所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
所述第一终端按照数据子段的先后顺序,依次将所述N个PDU数据包存储在所述第一BUFFER中;
所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一BUFFER具有至少N个缓冲区,一个缓冲区用于存储一个PDU数据包;
所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送,包括:
按照预设顺序,依次将所述第一BUFFER中预设顺序最靠前且存储有PDU数据包的缓冲区中的PDU数据包向所述第二终端发送。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,每个所述缓冲区对应一个优先级;
获取所述第一BUFFER中当前时刻存储的PDU数据包数量;
当所述当前时刻存储的PDU数据包数量小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述当前时刻存储的PDU数据包数量大于预设阈值M时,所述预设顺序为按照优先级由高到低,至第一PDU数据包所在缓冲区对应的优先级后再按照优先级由所述第二PDU数据包所在缓冲区对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包所在缓冲区对应的优先级后再按照优先级由第二PDU数据包所在缓冲区对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。
结合第一方面,在第一方面的第三种可能的实现方式中,所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包,包括:
获取所述目标数据的有效长度;
根据所述目标数据的有效长度以及预设长度指示,将所述目标数据分解为N个PDU数据包;其中,所述预设长度指示包括一个PDU数据包的最大有效数据长度,所述N通过所述目标数据的有效长度和预设长度指示确定。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述N通过所述目标数据的有效长度和预设长度指示确定,包括:
若确定所述目标数据的有效长度能被所述预设长度指示整除,则N=L/L’;
若确定所述目标数据的有效长度不能被所述预设长度指示整除,N=L/L’+1,其中,L为目标数据的有效长度,L’为预设长度指示。
结合第一方面,在第一方面的第五种可能的实现方式中,在所述第一终端建立所述第一终端和第二终端之间的连接时,所述第一终端还创建第二缓存器BUFFER;所述第二BUFFER用于存储所述第二终端发送的至少一个第一目标数据;所述方法还包括:
所述第一终端接收所述第二终端发送的至少一个第一目标数据;
所述第一终端将所述至少一个第一目标数据存储在所述第二BUFFER中。
第二方面,本发明实施例提供一种数据共享装置,包括:
S201、第二终端在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,所述第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
S202、所述第二终端接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
S203、所述第二终端若确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段,则获取所述N个PDU数据包分别对应的数据子段;
S204、所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的数据缓冲区中。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第二终端在建立第二终端和第一终端之间的连接时,还创建第二缓存器BUFFER,所述第二BUFFER包括至少一个数据缓冲区,每个所述数据缓冲区用于存储一个PDU数据包,所述方法还包括:
所述第二终端将存储在所述至少一个数据缓冲区中的PDU数据包向所述第一终端发送。
结合第二方面,在第二方面的第二种可能的实现方式中,所述PDU数据包还包含目标数据的数据子段是否为终止数据子段,相应的,所述第二终端接收所述第一终端发送的N个PDU数据包,包括:
所述第二终端若确定当前时刻所述第一终端发送的数据包为协议数据单元PDU数据包,将当前时刻接收到的所述PDU数据包存储至第三BUFFER中,并判断当前时刻接收的所述PDU数据包包含的目标数据的数据子段是否为终止数据子段;
若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段不是终止数据子段,则将当前时刻接收的所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中;继续执行S2031;
若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段是终止数据子段,将所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中,并执行S204。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的缓冲区中,包括:
获取存储在所述第四BUFFER中每个所述PDU数据包分别包含的所述目标数据中的数据子段;
将每个所述PDU数据包分别包含的所述目标数据中的数据子段,按照数据子段的先后顺序合并成目标数据,并存储至第五BUFFER中用于存储目标数据的位置;
若确定所述第一BUFFER中存在空闲的数据缓冲区,则将所述目标数据从第五BUFFER中拷贝到所述第一BUFFER的空闲的数据缓冲区中。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述PDU数据包还包括目标数据的标识,所述方法还包括:
若当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识不一致,则将当前时刻之前一个时刻存储在所述第四BUFFER中所有PDU数据包包含的目标数据的数据子段存储至第五BUFFER中。
第三方面,本发明实施例提供一种数据共享装置,所述装置包括:
创建单元,用于建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
获取单元,用于将接收到的目标数据包进行解析,获取目标数据;
分解单元,用于将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
存储单元,用于按照数据子段的先后顺序,依次将所述N个PDU数据包存储在所述第一BUFFER中;
发送单元,用于按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
结合第三方面,在第三方面的第一种可能的实现方式中,所述第一BUFFER具有至少N个缓冲区,一个缓冲区用于存储一个PDU数据包;
所述发送单元具体用于:
按照预设顺序,依次将所述第一BUFFER中预设顺序最靠前且存储有PDU数据包的缓冲区中的PDU数据包向所述第二终端发送。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,每个所述缓冲区对应一个优先级;
当所述N小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述N大于预设阈值M时,所述预设顺序为按照优先级由高到低,至第一PDU数据包对应的优先级后再按照优先级由所述第二PDU数据包对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包对应的优先级后再按照优先级由第二PDU数据包对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。
结合第三方面,在第三方面的第三种可能的实现方式中,所述分解单元,包括:
第一获取模块,用于获取所述目标数据的有效长度;
分解模块,用于根据所述目标数据的有效长度以及预设长度指示,将所述目标数据分解为N个PDU数据包;其中,所述预设长度指示包括一个PDU数据包的最大有效数据长度,所述N通过所述目标数据的有效长度和预设长度指示确定。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述N通过所述目标数据的有效长度和预设长度指示确定,包括:
若确定所述目标数据的有效长度能被所述预设长度指示整除,则N=L/L’;
若确定所述目标数据的有效长度不能被所述预设长度指示整除,N=L/L’+1,其中,L为目标数据的有效长度,L’为预设长度指示。
结合第三方面,在第三方面的第五种可能的实现方式中,在所述第一终端建立所述第一终端和第二终端之间的连接时,所述第一终端还创建第二缓存器BUFFER;所述第二BUFFER用于存储所述第二终端发送的至少一个第一目标数据;所述装置还包括:
接收单元,用于接收所述第二终端发送的至少一个第一目标数据;
第一存储单元,用于将所述至少一个第一目标数据存储在所述第二BUFFER中。
第四方面,本发明实施例提供一种数据共享装置,包括:
建立单元,用于在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,所述第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
接收单元,用于接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
判断单元,用于判断所述PDU数据包中是否存在一个PDU数据包包含的目标数据的数据子段为终止数据子段;
获取单元,用于在所述判断单元确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段时,获取所述N个PDU数据包分别对应的数据子段;
存储单元,用于将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的数据缓冲区中。
结合第四方面,在第四方面的第一种可能的实现方式中,所述第二终端在建立第二终端和第一终端之间的连接时,还创建第二缓存器BUFFER,所述第二BUFFER包括至少一个数据缓冲区,每个所述数据缓冲区用于存储一个PDU数据包,所述装置还包括:
发送单元,用于将存储在所述至少一个数据缓冲区中的PDU数据包向所述第一终端发送。
结合第四方面,在第四方面的第二种可能的实现方式中,所述PDU数据包还包含目标数据的数据子段是否为终止数据子段,相应的,所述接收单元,包括:
接收模块,用于接收第一终端发送的数据包;
判断模块,用于判断当前时刻所述第一终端发送的数据包是否为协议数据单元PDU数据包;
第一存储模块,用于在所述判断模块确定当前时刻所述第一终端发送的数据包为协议数据单元PDU数据包时,将当前时刻接收到的所述PDU数据包存储至第三BUFFER中,然后执行第二判断模块;
所述第二判断模块,用于判断当前时刻接收的所述PDU数据包包含的目标数据的数据子段是否为终止数据子段;
第二存储模块,用于在所述第一存储模块确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段不是终止数据子段时,将当前时刻接收的所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中;继续执行所述接收模块;
第三存储模块,用于在所述第二判断模块,确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段是终止数据子段,将所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中,并执行所述存储单元。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述存储单元,包括:
获取模块,用于获取存储在所述第四BUFFER中每个所述PDU数据包分别包含的所述目标数据中的数据子段;
合并模块,将每个所述PDU数据包分别包含的所述目标数据中的数据子段,按照数据子段的先后顺序合并成目标数据,并存储至第五BUFFER中用于存储目标数据的位置;
第三判断模块,用于判读所述第一BUFFER中是否存在空闲的数据缓冲区;
拷贝模块,用于在所述第三判断模块确定所述第一BUFFER中存在空闲的数据缓冲区,则将所述目标数据从第五BUFFER中拷贝到所述第一BUFFER的空闲的数据缓冲区中。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述PDU数据包还包括目标数据的标识,所述装置还包括:
第一判断单元,用于判断当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识是否一致;
所述存储单元还用于,若第一判断单元确定的当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识不一致,则将当前时刻之前一个时刻存储在所述第四BUFFER中所有PDU数据包包含的目标数据的数据子段存储至第五BUFFER中。
本发明实施例提供一种数据共享方法,第一终端通过对接收到的目标数据包进行解析,解析后不仅使得第一终端可以使用,且将解析后的目标数据分解成PDU数据包发送至所述第二终端,使得第二终端接收到所述目标数据之后,不用对所述目标数据进行解析,即可使用所述目标数据,本发明实施例使得第一终端和第二终端可以同时使用同一笔目标数据包,使得目标数据包能被快速、准确的在第一终端和第二终端之间实现共享。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据共享方法的流程示意图一;
图2为本发明实施例提供的一种数据共享方法的流程示意图二;
图3a为本发明实施例提供的一种数据共享方法中的PDU数据包的示意图;
图3b为本发明实施例提供的一种数据共享方法中的PDU数据包在第一BUFFER中存储的示意图;
图4为本发明另一实施例提供的一种数据共享方法的流程示意图一;
图5为本发明另一实施例提供的一种数据共享方法的流程示意图二;
图6为本发明另一实施例提供的一种数据共享方法中的PDU数据包接收时的示意图;
图7为本发明实施例提供的一种数据共享装置的结构示意图;
图8为本发明另一实施例提供的一种数据共享装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并对不对数量和执行次序进行限定。
本发明实施例提供一种数据共享方法,如图1所示,包括:
S101、第一终端建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
S102、所述第一终端将接收到的目标数据包进行解析,获取目标数据;
S103、所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
S104、所述第一终端按照数据子段的先后顺序,依次将所述N个PDU数据包存储在所述第一BUFFER中,如图3b所示;
S105、所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
本发明实施例提供一种数据共享方法,第一终端通过对接收到的目标数据包进行解析,解析后不仅使得第一终端可以使用,且将解析后的目标数据分解成PDU数据包发送至所述第二终端,即第一终端向所述第二终端发送的是已被解析之后的裸数据,使得第二终端接收到所述目标数据之后,不用对所述目标数据进行解析,即可使用所述目标数据,本发明实施例使得第一终端和第二终端可以同时使用同一笔目标数据包,使得目标数据包能被快速、准确的在第一终端和第二终端之间实现共享。
其中,本发明实施例对所述第一终端和第二终端之间连接的方式不进行限定,可以是网络连接,例如,有线网或者无线网,可以是第一终端向所述第二终端发送连接请求,然后第一终端根据所述第二终端对所述连接请求做出的响应,建立第一终端和第二终端之间的连接,也可以是第一终端接收所述第二终端发送连接请求,并根据所述连接请求,建立所述第一终端和所述第二终端之间的连接。
其中,本发明实施例中对第一终端不进行限定,所述第一终端具有蓝牙单元,所述第一终端通过蓝牙单元接收其他终端发送的目标数据包。
本发明实施例中,第一终端可以将所述第一终端通过蓝牙单元接收到的目标数据包共享给第二终端,所述第二终端可以不具备蓝牙单元,也可以是和所述第一终端共享蓝牙单元的终端,或者所述第二终端具有蓝牙单元,但所述第二终端与所述第一终端之间的距离超过蓝牙单元可传输的距离范围。所述第二终端可以通过网络等方式接收第一终端发送的目标数据,以及向所述第一终端发送的目标数据。
其中,本发明实施例所述其他终端的具体形式不进行限定,例如,所述其他终端可以是家用电器等,例如,空调、冰箱、热水器,火警检测器等;所述第一终端为用于管理所述其他终端的终端,所述第二终端可以是手机、平板电脑等。
其中,本发明实施例对所述第一终端将接收到的目标数据包进行解析,获取目标数据的具体形式不进行限定,例如,由于数据均是以数据包的形式传送的,附加了额外信息的,利用usb协议和蓝牙协议把获取的数据包中的附加信息去掉,即可得到目标数据,本发明实施例对所述目标数据包的具体形式和内容不进行限定,示例性的,本发明实施例中的目标数据包可以为蓝牙数据包。
示例性的,如图2所示,所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包具体可以通过以下步骤实现:
S1031、获取所述目标数据的有效长度;
其中,本发明实施例对获取所述目标数据的有效长度方式的具体形式不进行限定,可以参考现有技术中的方式,本发明实施例对此不进行限定。
S1032、根据所述目标数据的有效长度以及预设长度指示,将所述目标数据分解为N个PDU数据包;其中,所述预设长度指示包括一个PDU数据包的最大有效数据长度,所述N通过所述目标数据的有效长度和预设长度指示确定。
其中,本发明实施例对所述PDU数据包的具体形式不进行限定,例如可以如图3a所示,每个所述PDU数据包至少包括所述目标数据的标识、所述PDU数据包对应的数据子段、所述PDU数据包对应的数据子段的长度、每个所述PDU数据包对应的数据子段是否为所述目标数据的终止数据子段、以及所述PDU数据包对应的分段标识;所述N个PDU数据包对应的分段标识连续,所述N个PDU数据包对应的数据子段连续,且所述N个PDU数据包中的数据子段的长度之和等于所述数据子段的长度,N为正整数;如图3a所示,
其中,本发明实施例对所述预设长度指示的具体长度不进行限定,可以是第一终端确定的。
其中,对于生成的PDU(Protocol Data Unit,协议数据单元)数据包的数量N,本发明实施例对此不进行限定,其中,N为大于等于1的正整数,生成的PDU数据包的数量N可以通过以下方式确定:
示例性的,1、若确定所述目标数据的有效长度能被所述预设长度指示整除,则N=L/L’;例如,若目标数据的有效长度为32bit,预设长度指示为8bit,则将所述目标数据分成4个数据子段,分别对应四个不同的PDU数据包,即所述N=4,将目标数据分成4个PDU数据包。
2、若确定所述目标数据的有效长度不能被所述预设长度指示整除,N=L/L’+1,其中,L为目标数据的有效长度,L’为预设长度指示。例如,若目标数据的有效长度为32bit,预设长度指示为7bit,由于每个PDU数据包可以存储7bit的数据子段,故将目标数据的有效长度整除预设长度指示之后剩余的数据子段,存储至一个PDU数据包,故所述N=5,即将目标数据分成5个PDU数据包,每个PDU数据包对应一个数据子段。
其中,本发明实施例对所述PDU数据包的分段标识不进行限定,只要保证所述N个PDU数据包分段标识连续时,所述N个PDU数据包对应的数据子段连续,且所述N个PDU数据包中的数据子段的长度之和等于所述目标数据的长度,所述N个PDU数据包中的数据子段组合构成所述目标数据即可。
其中,本发明实施例对所述目标数据的标识不进行限定,只要能够唯一标识所述目标数据即可,可以是所述目标数据本身具有的标识,也可以是所述第一终端为所述目标数据确定的标识。
进一步的,所述第一BUFFER具有至少N个缓冲区,一个缓冲区用于存储一个PDU数据包,其中,N为正整数;
其中,步骤S105可以具体通过以下方式实现:
1041、按照预设顺序,依次将所述第一BUFFER中预设顺序最靠前且存储有PDU数据包的缓冲区中的PDU数据包向所述第二终端发送。
进一步可选的,每个所述缓冲区对应一个优先级。
其中,本发明实施例对所述优先级不进行限定,可以由所述第一终端预先设定,例如,可以给所述第一BUFFER中的每个缓冲区编号,所述N个缓冲区的顺序连续,将所述N个缓冲区编号的顺序确定为每个缓冲区对应的优先级,也可以根据缓冲区的位置设定优先级,也可以随意设置优先级。
为了快速的将目标数据向所述第二终端发送,本发明实施例在所述第一终端的Send线程中还设置有预设阈值,即当PDU数据包的数量大于预设阈值时,每次向所述终端发送预设阈值个PDU数据包,本发明实施例对所述预设阈值的具体数据不进行限定,可以根据实际需要进行选择,示例性的,当所述PDU数据包的数量为500时,为了快速的将数据包向所述第二终端发送,可以将所述预设阈值设置为30,即在Send线程在每次发送时,若PDU数据包的数量大于预30,则每次向所述第二终端发送PDU数据包,直至所述PDU数据包全部发送至所述第二终端。
其中,本发明实施例对所述预设顺序不进行限定,示例性的,当所述第一BUFFER中当前时刻存储的PDU数据包数量小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述当前时刻存储的PDU数据包数量小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述当前时刻存储的PDU数据包数量大于预设阈值M时,所述预设顺序为按照优先级由高到低,至第一PDU数据包所在缓冲区对应的优先级后再按照优先级由所述第二PDU数据包所在缓冲区对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包所在缓冲区对应的优先级后再按照优先级由第二PDU数据包所在缓冲区对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。由于send和write动作时同时进行的,即当所述缓冲区存在空闲时,即将剩余的PDU数据包写入所述空闲的缓冲区中。
示例性的,若有50个PDU数据包,预设阈值为30,则所述第一PDU数据包为当前存储的第30个PDU数据包存储的缓存区所对应的优先级,则预设顺序为按照优先级由高到低,至第30个PDU数据包对应的优先级后再按照优先级由第31数据包所在缓冲区对应的优先级到低的循环顺序,直至所述50个PDU数据包全部被发送至所述第二终端。
需要说明的是,本发明实施例中的将所述第一BUFFER中存储的所述N个PDU数据包向所述第二终端发送和通过所述第一终端的Send线程向所述第二终端发送PDU数据包的顺序是并行的。Write中,PDU数据包的写入是依次写入的,但不是一次性写入的,两次PDU数据包写入之间可能有先前存储的PDU数据包的发送。Send过程,两轮Send之间,可能有新PDU数据包的写入。
示例性的,其中,所述第一终端可以通过Write动作将所述PDU数据包按照预设顺序,依次将所述PDU数据包存储至所述第一BUFFER中预设顺序最靠前的且未存储PDU数据包的缓冲区,之后,所述第一终端的send(发送)线程将检测第一BUFFER中有数据可用。一方面,第一终端的send线程若确定第一BUFFER中存储的PDU数据包数量小于等于M个,第一终端则调用kernel_sendmsg()函数将所述N个PDU数据包按照每个PDU数据包所包含的数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包按照预设顺序向所述第二终端发送。同时,所述第二终端在第二终端的recv线程里调用kernel_recvmsg()接收第一终端发送的PDU数据包。
recv()函数是基于系统接口kernel_recvmsg()封装的,核心是该系统接口,用于接收网络传输的数据。
另一方面,所述第一终端可以通过Write动作将所述PDU数据包按照数据子段的先后顺序依次写入所述第一BUFFER中的缓冲区中,第一终端的send线程若确定第一BUFFER中存储的PDU数据包数量大于M个,然后调用kernel_sendmsg()函数将所述N个PDU数据包按照预设顺序为按照优先级由高到低,至第一PDU数据包所在缓冲区对应的优先级后再按照优先级由所述第二PDU数据包所在缓冲区对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包所在缓冲区对应的优先级后再按照优先级由第二PDU数据包所在缓冲区对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。
recv接收到数据后,第二终端的read就可以将数据读出供接收端数字终端使用了。
进一步可选的,为了使得第一终端和所述第二终端可以实现双向共享,故在所述第一终端建立所述第一终端和第二终端之间的连接时,所述第一终端还创建第二缓存器BUFFER;所述第二BUFFER用于存储所述第二终端发送的至少一个第一目标数据;所述方法还包括:
所述第一终端接收所述第二终端发送的至少一个第一目标数据;
其中,第一终端接收所述第二终端发送的至少一个第一目标数据可以通过调用第一终端的recv线程来实现,本发明实施例在此不再赘述。
所述第一终端将所述至少一个第一目标数据存储在所述第二BUFFER中。
需要说明的是,本发明实施例中的第一终端的send线程与recv线程之间不存在依赖关系,send线程的运作依赖的是第一BUFFER中有无数据可发以及网络,recv线程依赖的是网络与第二BUFFER中是否有空间来写入数据。
本发明实施例中的数据共享方法是由状态切换(init(初始化)、connect(连接)、disconnect(断开)、disinit)四种状态控制的,其中的init状态和connect状态操作完成后,就可以实现数据的共享。此外,对于数据的处理,主要有Write、read、send和recv四个动作,其中,Write用于将数据写入第一终端的缓冲区中,read用于读取第一终端接收的数据,send用于发送第一终端解析之后的数据,recv用于接收第二终端向第一终端发送的数据,init状态在执行的时候会创建两个BUFFER(第一BUFFER和第二BUFFER)。
此外,在Bttr层添加了网络重连的保护机制,以保证终端在非主动断开网络的情况下可以自动重连,并继续传输数据。网络连接在建立的时候,两端终端要进行区分。这是由网络连接的特性决定的,一方发起连接请求,一方接收才能实现网络连接。但是两端终端在实现网络连接之后,将再无区别,于数据传输时也是对等的。网络连通后,实际的数据分包转发部分会将socket(套接字)转换成内核态可用的socket,使得数据共享过程能够利用新socket来进行终端间的网络通信。利用套接字的属性做了一个设定,让两个终端定时进行握手,若不是第一终端和第二终端之间主动要求断开网络,但是第一终端和第二终端之间却无法成功握手(比如,网线被拔掉),则尝试重新连接,可以通过在第一终端和第二终端上设定timeout限值,在timeout限值之内第一终端和第二终端就会重新建立连接,网络连接就能自动重新建立。套接字的转换是在connect状态下完成的,而connect状态除了转换套接字外,主要工作是启动了两个线程(send线程和recv线程),用于发送数据与接收数据。这两个线程的工作过程就是第一终端和第二终端之间蓝牙数据共享的实现过程。
本发明实施例还提供一种数据共享方法,如图4所示,包括:
S201、第二终端在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,所述第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
S202、所述第二终端接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
S203、所述第二终端若确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段,则获取所述N个PDU数据包分别对应的数据子段;
S204、所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的数据缓冲区中。
本发明实施例提供一种数据共享方法,第二终端通过接收第一终端发送的目标数据,由于该目标数据在第二终端接收前,已由第一终端解析好,即第二终端接收到第一终端发送的是裸数据,故第二终端接收该目标数据以后,无需对所述目标数据进行解析,便可以直接应用所述目标数据。本发明实施例使得第一终端和第二终端可以同时使用同一笔目标数据包,使得目标数据包能被快速、准确的在第一终端和第二终端之间实现共享。
进一步可选的,为了实现第一终端和第二终端之间的双向共享,所述第二终端在建立第二终端和第一终端之间的连接时,还创建第二缓存器BUFFER,所述第二BUFFER包括至少一个数据缓冲区,每个所述数据缓冲区用于存储一个PDU数据包,所述方法还包括:
S205、所述第二终端将存储在所述至少一个数据缓冲区中的PDU数据包向所述第一终端发送。
其中,所述第二终端通过所述第二终端的recv线程接收第一终端发送的N个PDU数据包,从所述recv线程接收PDU数据包到获取到目标数据并将所述目标数据存储至所述第一缓存器的数据缓冲区中,所述第二终端至少包含第三BUFFER、第四BUFFER以及第五BUFFER。其中,第三BUFFER的大小为一个PDU数据包的长度,所述第三BUFFER用于暂存所述PDU数据包,第四BUFFER是由PDU数据包转换成目标数据的存储中转,所述第四BUFFER的大小为N个PDU数据包的长度,所述N为目标数据最大长度时生成PDU数据包的个数,所述第五BUFFER的大小为一个目标数据的长度,所述第一BUFFER的大小至少为一个目标数据的长度,
示例性的,如图5所示,步骤S202可以具体通过以下步骤实现:
S2021、所述第二终端若确定当前时刻所述第一终端发送的数据包为协议数据单元PDU数据包,将当前时刻接收到的所述PDU数据包存储至第三BUFFER中,并判断当前时刻接收的所述PDU数据包包含的目标数据的数据子段是否为终止数据子段;
S2022、若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段不是终止数据子段,则将当前时刻接收的所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中;继续执行S2021;
S2023、若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段是终止数据子段,将所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中,并执行S204。
进一步可选的,所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的缓冲区中,包括:
S2041、获取存储在所述第四BUFFER中每个所述PDU数据包分别包含的所述目标数据中的数据子段;
S2042、将每个所述PDU数据包分别包含的所述目标数据中的数据子段,按照数据子段的先后顺序合并成目标数据,并存储至第五BUFFER中用于存储目标数据的位置;
S2043、若确定所述第一BUFFER中存在空闲的数据缓冲区,则将所述目标数据从第五BUFFER中拷贝到所述第一BUFFER的空闲的数据缓冲区中。
进一步可选的,所述方法还包括:
若当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识不一致,则将当前时刻之前一个时刻存储在所述第四BUFFER中所有PDU数据包包含的目标数据的数据子段存储至第五BUFFER中。
进一步可选的,所述方法还包括:
所述PDU数据包还包括目标数据的标识,所述第二终端将第一终端发送的目标数据标识不同的目标数据存储至所述第一BUFFER中不同的数据缓冲区中。
进一步可选的,在所述步骤S202之前,所述方法还包括:
接收所述第一终端发送的所述第一请求消息;所述第一请求消息中携带所述PDU数据包包含的目标数据的起始数据子段和目标数据的终止数据子段,以及所述目标数据的标识。
示例性的,第一终端在recv线程里,recv()函数中通过调用kernel_recvmsg()收取第一终端发送的数据包,并将所述数据包存储至第三BUFFER中。基于收到的数据包判断是否为PDU数据包,若是则判断PDU数据包包含的目标数据的数据子段是否为终止数据子段,若不是,则所述第二终端继续调用recv()函数继续收取PDU数据包,并将接到PDU数据包按照接收的PDU数据包的先后顺序依次存储至第四BUFFER中,直至接收到的PDU数据包包含的目标数据的数据子段为终止数据子段,在recv()函数接收到PDU数据包包含的目标数据的数据子段为终止数据子段之后,将包含目标数据的数据子段为终止数据子段的PDU数据包从第三BUFFER拷贝到第四BUFFER中,在接收到该目标数据的所有数据子段之后,从所述第四BUFFER中的每个PDU数据包中获取所述PDU数据包对应的数据子段,将获取的数据子段,按照数据子段的先后顺序组成一个目标数据,并存储至第五BUFFER中用于存储目标数据的位置,然后再从第五BUFFER中将目标数据拷贝至第一BUFFER中。
本发明实施例中的目标数据包可以为HID数据包。
由于,目标数据包在发送的时候被分成了若干个PDU数据包,如图6所示,因此,要收取一个完整的目标数据包,需要收取若干次的PDU数据包。如果当前时刻收到的PDU数据包与第四BUFFER中当前时刻之前一个时刻收到的PDU数据包是同一个目标数据的分包,且该PDU数据包包含的目标数据的数据子段不是终止数据子段,第二终端将把当前时刻第三BUFFER中新收到PDU数据包接在上一次存入第四BUFFER的PDU数据包之后,然后进入下一次while循环,继续收取下一个PDU数据包。如此,不断的接收PDU数据包,并按照接收的PDU数据包的先后顺序依次存储至第四BUFFER中,直至接收到同一目标数据的PDU数据包中包含的目标数据的终止数据子段。若接收到一个目标数据对应的完整的PDU数据包,将第四BUFFER中存储的各个PDU数据包的目标数据的数据子段拷贝到第五BUFFER中,存储在用来存放目标数据的位置,然后将目标数据的附加信息也存在相应位置。如果当前时刻收到的PDU数据包与第四BUFFER中当前时刻之前一个时刻收到的PDU数据包不是同一个目标数据的分包,将第四BUFFER中的每个PDU数据包中包含的目标数据中的数据子段拷贝到第一BUFFER中,同时为所述目标数据添加标识,然后将当前时刻之前存储在所述第四BUFFER中的所有数据包清空,并存入当前时刻接收到的PDU数据包,继续下一个分包的收取。
需要说明的是,本发明实施例中的第二终端的send线程与recv线程之间不存在依赖关系,send线程的运作依赖的是第二BUFFER中有无数据可发以及网络,recv线程依赖的是网络与第一BUFFER中是否有空间来写入数据。
第三方面,如图7所示,本发明实施例提供一种数据共享装置,所述装置包括:
创建单元601,用于建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
获取单元602,用于将接收到的目标数据包进行解析,获取目标数据;
分解单元603,用于将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
存储单元604,用于按照数据子段的先后顺序,依次将所述N个PDU数据包存储在所述第一BUFFER中;
发送单元605,用于按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
本发明实施例提供一种数据共享装置,第一终端通过对接收到的目标数据包进行解析,解析后不仅使得第一终端可以使用,且将解析后的目标数据分解成PDU数据包发送至所述第二终端,使得第二终端接收到所述目标数据之后,不用对所述目标数据进行解析,即可使用所述目标数据,本发明实施例使得第一终端和第二终端可以同时使用同一笔目标数据包,使得目标数据包能被快速、准确的在第一终端和第二终端之间实现共享。
进一步可选的,所述第一BUFFER具有至少N个缓冲区,一个缓冲区用于存储一个PDU数据包;
所述发送单元605具体用于:
按照预设顺序,依次将所述第一BUFFER中预设顺序最靠前且存储有PDU数据包的缓冲区中的PDU数据包向所述第二终端发送。
进一步可选的,每个所述缓冲区对应一个优先级;
当所述N小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述N大于预设阈值M时,所述预设顺序为按照优先级由高到低,至第一PDU数据包对应的优先级后再按照优先级由所述第二PDU数据包对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包对应的优先级后再按照优先级由第二PDU数据包对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。
进一步可选的,所述分解单元603,包括:
第一获取模块,用于获取所述目标数据的有效长度;
分解模块,用于根据所述目标数据的有效长度以及预设长度指示,将所述目标数据分解为N个PDU数据包;其中,所述预设长度指示包括一个PDU数据包的最大有效数据长度,所述N通过所述目标数据的有效长度和预设长度指示确定。
进一步可选的,所述N通过所述目标数据的有效长度和预设长度指示确定,包括:
若确定所述目标数据的有效长度能被所述预设长度指示整除,则N=L/L’;
若确定所述目标数据的有效长度不能被所述预设长度指示整除,N=L/L’+1,其中,L为目标数据的有效长度,L’为预设长度指示。
进一步可选的,在所述第一终端建立所述第一终端和第二终端之间的连接时,所述第一终端还创建第二缓存器BUFFER;所述第二BUFFER用于存储所述第二终端发送的至少一个第一目标数据;所述装置还包括:
接收单元,用于接收所述第二终端发送的至少一个第一目标数据;
第一存储单元,用于将所述至少一个第一目标数据存储在所述第二BUFFER中。
第四方面,本发明实施例提供一种数据共享装置,如图8所示包括:
建立单元,用于在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,所述第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
接收单元,用于接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
判断单元,用于判断所述PDU数据包中是否存在一个PDU数据包包含的目标数据的数据子段为终止数据子段;
获取单元,用于在所述判断单元确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段时,获取所述N个PDU数据包分别对应的数据子段;
存储单元,用于将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的数据缓冲区中。
本发明实施例提供一种数据共享装置,第二终端通过接收第一终端发送的目标数据,由于该目标数据在第二终端接收前,已由第一终端解析好,即第二终端接收到第一终端发送的是裸数据,故第二终端接收该目标数据以后,无需对所述目标数据进行解析,便可以直接应用所述目标数据。本发明实施例使得第一终端和第二终端可以同时使用同一笔目标数据包,使得目标数据包能被快速、准确的在第一终端和第二终端之间实现共享。
进一步可选的,所述第二终端在建立第二终端和第一终端之间的连接时,还创建第二缓存器BUFFER,所述第二BUFFER包括至少一个数据缓冲区,每个所述数据缓冲区用于存储一个PDU数据包,所述装置还包括:
发送单元,用于将存储在所述至少一个数据缓冲区中的PDU数据包向所述第一终端发送。
进一步可选的,所述PDU数据包还包含目标数据的数据子段是否为终止数据子段,相应的,所述接收单元,包括:
接收模块,用于接收第一终端发送的数据包;
判断模块,用于判断当前时刻所述第一终端发送的数据包是否为协议数据单元PDU数据包;
第一存储模块,用于在所述判断模块确定当前时刻所述第一终端发送的数据包为协议数据单元PDU数据包时,将当前时刻接收到的所述PDU数据包存储至第三BUFFER中,然后执行第二判断模块;
所述第二判断模块,用于判断当前时刻接收的所述PDU数据包包含的目标数据的数据子段是否为终止数据子段;
第二存储模块,用于在所述第一存储模块确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段不是终止数据子段时,将当前时刻接收的所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中;继续执行所述接收模块;
第三存储模块,用于在所述第二判断模块,确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段是终止数据子段,将所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中,并执行所述存储单元。
进一步可选的,所述存储单元,包括:
获取模块,用于获取存储在所述第四BUFFER中每个所述PDU数据包分别包含的所述目标数据中的数据子段;
合并模块,将每个所述PDU数据包分别包含的所述目标数据中的数据子段,按照数据子段的先后顺序合并成目标数据,并存储至第五BUFFER中用于存储目标数据的位置;
第三判断模块,用于判读所述第一BUFFER中是否存在空闲的数据缓冲区;
拷贝模块,用于在所述第三判断模块确定所述第一BUFFER中存在空闲的数据缓冲区,则将所述目标数据从第五BUFFER中拷贝到所述第一BUFFER的空闲的数据缓冲区中。
进一步可选的,所述PDU数据包还包括目标数据的标识,所述装置还包括:
第一判断单元,用于判断当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识是否一致;
所述存储单元还用于,若第一判断单元确定的当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识不一致,则将当前时刻之前一个时刻存储在所述第四BUFFER中所有PDU数据包包含的目标数据的数据子段存储至第五BUFFER中。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种蓝牙数据共享方法,其特征在于,所述方法包括:
第一终端建立所述第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
所述第一终端将通过蓝牙单元接收到的目标数据包进行解析,获取目标数据;
所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
所述第一终端按照数据子段的先后顺序,依次将所述N个PDU数据包存储在第一BUFFER中;
所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
2.根据权利要求1所述的方法,其特征在于,所述第一BUFFER具有至少N个缓冲区,一个缓冲区用于存储一个PDU数据包;
所述第一终端按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送,包括:
按照预设顺序,依次将所述第一BUFFER中预设顺序最靠前且存储有PDU数据包的缓冲区中的PDU数据包向所述第二终端发送。
3.根据权利要求2所述的方法,其特征在于,每个所述缓冲区对应一个优先级;
获取所述第一BUFFER中当前时刻存储的PDU数据包数量;
当所述当前时刻存储的PDU数据包数量小于等于预设阈值M时,所述预设顺序为按照优先级由高到低的顺序,或者,所述预设顺序为按照优先级由低到高的顺序;
当所述当前时刻存储的PDU数据包数量大于预设阈值M时,所述预设顺序为按照优先级由高到低,至第一PDU数据包所在缓冲区对应的优先级后再按照优先级由第二PDU数据包所在缓冲区对应的优先级到低的循环顺序;或者,所述预设顺序为按照优先级由低到高,至所述第一PDU数据包所在缓冲区对应的优先级后再按照优先级由第二PDU数据包所在缓冲区对应的优先级到高的循环顺序,其中,所述第一PDU数据包为所述N个PDU数据包中第QM个PDU数据包,所述第二PDU数据包为第QM+1个PDU数据包,Q为正整数。
4.根据权利要求1所述的方法,其特征在于,所述第一终端将所述目标数据分解为N个协议数据单元PDU数据包,包括:
获取所述目标数据的有效长度;
根据所述目标数据的有效长度以及预设长度指示,将所述目标数据分解为N个PDU数据包;其中,所述预设长度指示包括一个PDU数据包的最大有效数据长度,所述N通过所述目标数据的有效长度和预设长度指示确定。
5.根据权利要求1所述的方法,其特征在于,在所述第一终端建立所述第一终端和第二终端之间的连接时,所述第一终端还创建第二缓存器BUFFER;第二BUFFER用于存储所述第二终端发送的至少一个第一目标数据;所述方法还包括:
所述第一终端接收所述第二终端发送的至少一个第一目标数据;
所述第一终端将所述至少一个第一目标数据存储在所述第二BUFFER中。
6.一种蓝牙数据共享方法,其特征在于,包括:
S201、第二终端在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
S202、所述第二终端接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
S203、所述第二终端若确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段,则获取所述N个PDU数据包分别对应的数据子段;
S204、所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的数据缓冲区中。
7.根据权利要求6所述的方法,其特征在于,所述第二终端在建立第二终端和第一终端之间的连接时,还创建第二缓存器BUFFER,第二BUFFER包括至少一个数据缓冲区,每个所述数据缓冲区用于存储一个PDU数据包,所述方法还包括:
所述第二终端将存储在所述至少一个数据缓冲区中的PDU数据包向所述第一终端发送。
8.根据权利要求6所述的方法,其特征在于,所述PDU数据包还包含目标数据的数据子段是否为终止数据子段,相应的,所述第二终端接收所述第一终端发送的N个PDU数据包,包括:
所述第二终端若确定当前时刻所述第一终端发送的数据包为协议数据单元PDU数据包,将当前时刻接收到的所述PDU数据包存储至第三BUFFER中,并判断当前时刻接收的所述PDU数据包包含的目标数据的数据子段是否为终止数据子段;
若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段不是终止数据子段,则将当前时刻接收的所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中;继续执行S2031;
若确定当前时刻接收的所述PDU数据包包含的目标数据的数据子段是终止数据子段,将所述PDU数据包从所述第三BUFFER中存储至第四BUFFER中,并执行S204。
9.根据权利要求8所述的方法,其特征在于,所述第二终端将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一缓存器的缓冲区中,包括:
获取存储在所述第四BUFFER中每个所述PDU数据包分别包含的所述目标数据中的数据子段;
将每个所述PDU数据包分别包含的所述目标数据中的数据子段,按照数据子段的先后顺序合并成目标数据,并存储至第五BUFFER中用于存储目标数据的位置;
若确定所述第一BUFFER中存在空闲的数据缓冲区,则将所述目标数据从第五BUFFER中拷贝到所述第一BUFFER的空闲的数据缓冲区中。
10.根据权利要求8所述的方法,其特征在于,所述PDU数据包还包括目标数据的标识,所述方法还包括:
若当前时刻所述第二终端接收到的所述PDU数据包包含的数据标识与所述当前时刻之前一个时刻存储在所述第四BUFFER中的所述PDU数据包包含的数据标识不一致,则将当前时刻之前一个时刻存储在所述第四BUFFER中所有PDU数据包包含的目标数据的数据子段存储至第五BUFFER中。
11.一种蓝牙数据共享装置,其特征在于,所述装置包括:
创建单元,用于建立第一终端和第二终端之间的连接时,并创建第一缓存器BUFFER;
获取单元,用于将通过蓝牙单元接收到的目标数据包进行解析,获取目标数据;
分解单元,用于将所述目标数据分解为N个协议数据单元PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
存储单元,用于按照数据子段的先后顺序,依次将所述N个PDU数据包存储在第一BUFFER中;
发送单元,用于按照数据子段的先后顺序,依次将存储于所述第一BUFFER的PDU数据包向所述第二终端发送。
12.一种蓝牙数据共享装置,其特征在于,包括:
建立单元,用于在建立第二终端和第一终端之间的连接时,创建第一缓存器BUFFER,第一BUFFER至少包括一个数据缓冲区,一个数据缓冲区用于存储一个目标数据;
接收单元,用于接收所述第一终端发送的N个PDU数据包;其中,一个所述PDU数据包包含所述目标数据中的一个数据子段,且所述N个PDU数据包中的数据子段组合构成所述目标数据;
判断单元,用于判断所述PDU数据包中是否存在一个PDU数据包包含的目标数据的数据子段为终止数据子段;
获取单元,用于在所述判断单元确定所述N个PDU数据包中存在一个PDU数据包包含的目标数据的数据子段为终止数据子段时,获取所述N个PDU数据包分别对应的数据子段;
存储单元,用于将所述N个PDU数据包分别对应的数据子段合并成目标数据,并存储至所述第一BUFFER的数据缓冲区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610089233.2A CN107094084B (zh) | 2016-02-17 | 2016-02-17 | 一种数据共享方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610089233.2A CN107094084B (zh) | 2016-02-17 | 2016-02-17 | 一种数据共享方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107094084A CN107094084A (zh) | 2017-08-25 |
CN107094084B true CN107094084B (zh) | 2020-04-21 |
Family
ID=59648658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610089233.2A Active CN107094084B (zh) | 2016-02-17 | 2016-02-17 | 一种数据共享方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107094084B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109922159B (zh) * | 2019-03-27 | 2021-10-08 | 宁波大学 | 一种物联网设备间云端双向虚拟连接的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383960B (zh) * | 2008-10-30 | 2011-05-11 | 中兴通讯股份有限公司 | 手机电视业务的实现方法、终端及采用的数据缓冲方法 |
CN103414983A (zh) * | 2013-08-09 | 2013-11-27 | 广州番禺巨大汽车音响设备有限公司 | 一种基于蓝牙通信在音响中实现多位传输的方法及系统 |
-
2016
- 2016-02-17 CN CN201610089233.2A patent/CN107094084B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107094084A (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109088799B (zh) | 一种客户端接入方法、装置、终端以及存储介质 | |
CN107135279A (zh) | 一种处理长连接建立请求的方法和装置 | |
CN112714426B (zh) | 蓝牙设备的智能升级方法、装置、电子设备及介质 | |
CN103338144B (zh) | 一种会话数据同步方法和装置 | |
EP2560337A1 (en) | Method and system for realizing wireless usb flash disk | |
CN103401898A (zh) | 在移动终端之间传输数据的方法及移动终端 | |
CN104936211A (zh) | 一种无线资源分配方法 | |
CN107204924B (zh) | 链路发现方法及装置 | |
CN104333842B (zh) | 一种基于wifi的智能设备节目资源共享方法及其系统 | |
CN114077568A (zh) | 核间通信方法、装置、电子组件以及电子设备 | |
CN115174490A (zh) | 一种数据传输方法及网络应用终端 | |
CN103457748A (zh) | 数据传输方法、系统和设备 | |
CN103841181A (zh) | 一种局域网多线程文件传输方法 | |
CN110971533B (zh) | 用于数据通信的方法、服务器装置、客户端装置和介质 | |
CN107094084B (zh) | 一种数据共享方法和装置 | |
CN104539707A (zh) | 车机、手机及pc端的屏幕映射方法及系统 | |
CN109302325A (zh) | 串口服务器、设备管理方法及可读存储介质 | |
CN110650546B (zh) | 文件传输的方法、装置、存储介质以及终端 | |
CN105100000B (zh) | 一种接口转换装置和网络系统 | |
CN102185881A (zh) | 家庭数字设备无线多协议空间共享式存储管理器及方法 | |
CN111405534A (zh) | 信息传输方法、第一终端及计算机存储介质 | |
CN102025730B (zh) | 基于http协议的数据传输装置及其实现方法 | |
CN104426858A (zh) | 一种信息处理方法及电子设备 | |
CN109831467B (zh) | 数据传输方法、设备及系统 | |
CN106488537B (zh) | 一种发送方法、装置及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 266100 No. 151, Zhuzhou Road, Laoshan District, Shandong, Qingdao Patentee after: Hisense Video Technology Co.,Ltd. Address before: 266100 No. 151, Zhuzhou Road, Laoshan District, Shandong, Qingdao Patentee before: HISENSE ELECTRIC Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |