CN111404663B - 一种基于蓝牙点对点的数据传输方法及其*** - Google Patents
一种基于蓝牙点对点的数据传输方法及其*** Download PDFInfo
- Publication number
- CN111404663B CN111404663B CN201910003770.4A CN201910003770A CN111404663B CN 111404663 B CN111404663 B CN 111404663B CN 201910003770 A CN201910003770 A CN 201910003770A CN 111404663 B CN111404663 B CN 111404663B
- Authority
- CN
- China
- Prior art keywords
- equipment
- session
- transmission
- bluetooth
- module
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
- H04W28/065—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information using assembly or disassembly of packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供一种基于蓝牙点对点的数据传输方法及其***,方法包括:设备A依据所述信息A创建对应的会话ID Session A;将信息A拆分成两个以上的数据包;依据拆分顺序生成各个数据包对应的哈希值index,并将其分别与哈希值Token A组成传输包体;发送各个传输包体至网内其他设备;设备B接收第一个传输包体;创建会话对象SA,并以第一个传输包体中的会话ID Session A为键,会话对象SA为值存入哈希表;当设备B再次接收到包含会话ID Session A的传输包体时,则依据哈希表,将待传输包体存入会话对象SA中。本发明实现数据与设备的解耦,网内设备可以从任意设备上获取所需数据,实现真正意义的去中心化。
Description
技术领域
本发明涉及蓝牙数据传输领域,具体涉及一种基于蓝牙点对点的数据传输方法及其***。
背景技术
现今,蓝牙技术的运用越来越广泛。一般应用于商场、支付以及室内定位及虚拟现实、增强现实、混合现实、设备控制等场景。国外商场大多配备了蓝牙设备,可以对买家进入室内进行定位,当买家进入商场时,通常会在不知不觉的情况下收到一些商场的活动信息。买家路过某家店铺时,还能直接通过查看店铺推送的广告和促销信息直接购买商品并支付。这些消费场景在国外随处可见,而在国内,均以手机网络(移动网络)和Wi-Fi、近场通讯作为一种消费的行为方式。以手机交互Wi-Fi操作为例,买家首先要去开启Wi-Fi或者移动4G网络,而开启Wi-Fi后要进行免验证登录,之后再通过手机短信的方式去激活Wi-Fi认证操作,然后才能查看到商场的活动信息。这种方式对一个初入商场的买家来说,需要经过三个步骤才能完成,而采用蓝牙的话,只要一个步骤就能解决。因此,现有的获取商场内电子活动信息的方式存在操作不便的问题。
再来,假设商场的路由器、互联网上的商场服务器或者是整个互联网区域内的主机出现问题时,那么在上述的案例中,商场优惠活动信息的分发工作将完全无法进行,甚至无法进行在线支付,需要转而由人工引导。该情况只是阐述传统购买方式可能存在的问题。而买家如果有使用第三方支付的消费习惯,将很难保证能在商城里快速支付及购买商品,更不用说是商场现有的无人销售机购买的场景了。
那么在去中心化的环境下,当主机设备比如服务器,在商场活动专员输入商场活动相关信息后,商场的蓝牙设备均可接收到活动信息,此时这些蓝牙设备均将数据保存在设备中。当某个蓝牙设备甚至主机发生故障的情况下,买家依然可以在无网络的情况下从其它设备上获取到商场的活动信息。而这种去中心化的设备能力应用在商城和政府以及贫困山区就可以彻底解决许多上述类似的场景。
通常,移动端的组网和传输方式都是采用传统的Wi-Fi组网以及移动网络组网来实现设备之间的通讯。而蓝牙自身有一种特殊的发现能力是其它网络特性及硬件能力所没有的:蓝牙有着自身的SDP发现能力和设备搜寻的能力,能将搜寻到设备组织到一个网络下,通过一组广播将需要发送的数据发送至被搜寻到的设备上。
在去中心化下,蓝牙可以不需要通过移动网络或者Wi-Fi,也不需要通过访问服务器就能拿到数据。它完全是基于去中心化的传思维和技术实现。将多台蓝牙设备组成一个网络,在网络传输的过程自由传输数据。但是,现有的蓝牙组网通信可能会产生一些消息对应不上某些设备地址的问题,这是由于某些蓝牙设备在传输过程中可能由于某些环境因素或自身因素发生了中断,而后重新加入组网后该蓝牙设备将会产生新的地址,从而导致数据源无法追溯,无法获取到真实的数据源。针对这种问题,现有技术中可以经组网后的蓝牙设备来维护这组数据。这样即使设备丢失,该组数据源也能从其他蓝牙设备上获取。
也就是说,商场的活动相关消息通过蓝牙设备分发到其它蓝牙设备上,是通过多组哈希值进行处理的,而每台设备接收到的哈希值,由于报文的限制(蓝牙传输20bit的限制),使得设备无法从中得知这组哈希值应该对应到该设备的哪条数据组中,最终产生消息不对等的情况。
要解决上述的情况,如果从商场的用户行为处理方式来说,可以将每台蓝牙设备安放至店铺中,与商场的其它设备进行隔离。而这种方式在该店铺的设备出现故障以后将无法运作,数据存储是个问题。那么只能从技术手段上着手,从技术上的一般做法是将接收到消息放入至消息队列,接着再以发送方作为数据归组和排序,等到这组消息接收完以后,再根据排序进行下组数据的处理。而这种方式将造成了时延问题,出现了多设备之间传输的时消息响应不及时的问题。还有另一种做法则是常见的C-S模式做法,效仿HTTP的请求方式,为已经连接上的设备创建一个会话层,在当设备接收到消息时,消息会转发至会话层处理。这种方式从形式上虽然可行,但是在点对点的哈希寻路方案体系下的数据传输,每个生成的哈希值是不关联设备本身的。
现有技术中,为了解决消息不对等问题,提供有以下几种解决方案:
1)设备会话层方案:通过给连接的设备对象打个标记或者建立会话层进行管理。当消息体到达时,根据设备对象来指定要将消息放置到哪个会话层里面。但是这种方案就绑定了对方设备的信息,一旦对方设备消息,在接收到多设备返回数据的时候,数据源同样无法识别来源。
2)元数据会话方案:在消息体中预制每条消息的流水号,但是由于流水号过长,无法实现在蓝牙这种设备的方案上。
因此,急需提供基于去中心化思想,且不会出设备之间传输数据消息不对等现象的一种基于蓝牙点对点的数据传输方法及其***。
发明内容
本发明所要解决的技术问题是:一种基于蓝牙点对点的数据传输方法及其***,能实现设备之间的存储能力和数据共享能力,解决设备间断网后重连容易出现消息不对等问题。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于蓝牙点对点的数据传输方法,包括:
蓝牙自组网络内的设备A接收输入的信息A;
设备A依据所述信息A生成对应的哈希值Token A;
设备A依据所述信息A创建对应的会话ID Session A;
设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
设备A依据拆分顺序生成各个数据包对应的哈希值index;
将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID SessionA一起组成传输包体,获取对应数据包个数的传输包体集合;
设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B接收设备A发送过来的第一个传输包体;
设备B创建会话对象SA,并以所述第一个传输包体中的会话ID Session A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述待传输包体存入会话对象SA中。
本发明提供的另一个技术方案为:
一种基于蓝牙点对点的数据传输***,包括蓝牙连接的至少两个设备;所述至少两个设备包括设备A和设备B;
设备A包括:
第一接收模块,用于接收输入的信息A;
第一生成模块,用于设备A依据所述信息A生成对应的哈希值Token A;
创建模块,用于设备A依据所述信息A创建对应的会话ID Session A;
拆分模块,用于设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
第二生成模块,用于设备A依据拆分顺序生成各个数据包对应的哈希值index;
组包模块,用于将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID Session A一起组成传输包体,获取对应数据包个数的传输包体集合;
发送模块,用于设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B包括:
第二接收模块,用于设备B接收设备A发送过来的第一个传输包体;
处理模块,用于设备B创建会话对象SA,并以所述第一个传输包体中的会话IDSession A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
第一存储模块,用于当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述待传输包体存入会话对象SA中。
本发明的有益效果在于:通过对应每一个原始数据(拆包前)创建对应的会话ID,并将其分别与对应拆包顺序的各个数据包的哈希值index组成传输包体进行传输,接收方可以直接依据其中的会话ID将同组传输包体统一存储,依据各个数据包对应的哈希值index向发送方获取对应的数据包,从而实现数据传输。由于本发明将数据与设备解耦,即组网中的数据不再于某台设备有直接的联系。因此,即使某台设备脱离组网,其他设备也能基于数据包对应所有数据包的编号(即哈希值index)在组网中全网搜索,从其他设备中获取相应的数据,而不受设备限制。本发明基于分布式同步的方案,实现真正意义的去中心化,无需考虑设备断线重连的问题,同时又能解决设备间传输数据不对等问题。
附图说明
图1为本发明实施例的一种基于蓝牙点对点的数据传输方法的流程示意图;
图2为本发明实施例的一种基于蓝牙点对点的数据传输***的组成示意图;
图3为本发明实施例五的一种基于蓝牙点对点的数据传输***的组成示意图。
标号说明:
A1、第一接收模块;A2、第一生成模块;A3、创建模块;
A4、第二生成模块;A5、组包模块;A6、发送模块;
A7、第一线程创建模块;A8、第一写入模块;A9、第二写入模块;
A10、拆分模块;
A81、广播单元;A82、第一扫描单元;A83、第一添加单元;
A84、第一建立单元;A85、第一加入单元;
B1、第二接收模块;B2、处理模块;B3、第一存储模块;
B4、获取模块;B5、第二存储模块;B6、断线重连模块;
B7、第二线程创建模块;B8、第三写入模块;
B81、第二扫描单元;B82、第二添加单元;
B83、第二建立单元;B84、第二加入单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:对应每一个原始数据(拆包前)创建对应的会话ID,并将其分别与对应拆包顺序的各个数据包的哈希值index组成传输包体进行传输,接收方直接依据其中的会话ID将同组传输包体统一存储,实现数据与设备的解耦,网内设备可以从任意设备上获取所需数据,实现真正意义的去中心化。
本发明涉及的技术术语解释:
请参照图1,本发明提供一种基于蓝牙点对点的数据传输方法,包括:
蓝牙自组网络内的设备A接收输入的信息A;
设备A依据所述信息A生成对应的哈希值Token A;
设备A依据所述信息A创建对应的会话ID Session A;
设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
设备A依据拆分顺序生成各个数据包对应的哈希值index;
将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID SessionA一起组成传输包体,获取对应数据包个数的传输包体集合;
设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B接收设备A发送过来的第一个传输包体;
设备B创建会话对象SA,并以所述第一个传输包体中的会话ID Session A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述待传输包体存入会话对象SA中。
从上述描述可知,本发明的有益效果在于:本发明充分发挥蓝牙的能力,实现设备间通过发现,将数据传输至已组网中的设备,实现设备之前的存储能力及数据共享能力。
进一步的,还包括:
设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包;
设备B依据接收到的所有数据包获取所述信息A,并存储至本地。
由上述描述可知,设备能直接依据接收到的各个传输包体中的哈希值index向发送方获取对应的数据包,实现与发送方解耦的数据同步方式。
进一步的,还包括:
断线重连的设备B依据断线前最后一次接收到的传输包体中的哈希值index,向设备A请求继续未完成的传输。
由上述描述可知,由于各个哈希值index分别对应其传输包体的拆分顺序,因此,即使设备B断线重连,也能依据最后一次接收到的哈希值index向设备A准确、高效地获取其后所有哈希值index对应的数据包,并不会受设备B的地址影响,从而不会出现消息不对等的情况。
进一步的,还包括:
设备A和设备B分别创建各自的GATT CLIENT线程、GATT SERVER线程和路由表;
设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中;
设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将传输包体写入设备B。
由上述描述可知,本发明还能够基于转发器的路由原理,利用每个设备自身的消息路由将数据分发至其他设备,实现不受设备数量限制的进行设备之间的数据互通。
进一步的,所述设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中;设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中,具体为:
设备A和设备B分别启动各自的GATT SERVER线程,并广播预设的UUID;
设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
设备B添加设备A的IP地址至对自身的等网络结点的列表中;
设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
设备A添加设备B的IP地址至自身的对等网络结点的列表中;
设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
设备B将与其成功连接的设备A的设备对象加入自身的路由表中;
设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
设备A将与其成功连接的设备B的设备对象加入自身的路由表中。
由上述描述可知,在一具体实施方式中,能够依据预设的UUID快速且准确地扫描获取指定的设备;依据设备的IP地址创建路由表,以实现基于路由表将数据分发至指定的设备,即保证设备之间可以找到指定的终端。
本发明提供的另一个技术方案为:
一种基于蓝牙点对点的数据传输***,包括蓝牙连接的至少两个设备;所述至少两个设备包括设备A和设备B;
设备A包括:
第一接收模块,用于接收输入的信息A;
第一生成模块,用于设备A依据所述信息A生成对应的哈希值Token A;
创建模块,用于设备A依据所述信息A创建对应的会话ID Session A;
拆分模块,用于设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
第二生成模块,用于设备A依据拆分顺序生成各个数据包对应的哈希值index;
组包模块,用于将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID Session A一起组成传输包体,获取对应数据包个数的传输包体集合;
发送模块,用于设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B包括:
第二接收模块,用于设备B接收设备A发送过来的第一个传输包体;
处理模块,用于设备B创建会话对象SA,并以所述第一个传输包体中的会话IDSession A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
第一存储模块,用于当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述待传输包体存入会话对象SA中。
从上述描述可知,本发明的有益效果在于:本发明提供的与基于蓝牙点对点的数据传输方法对应的***,能够实现通过对应每一个原始数据(拆包前)创建对应的会话ID,并将其分别与对应拆包顺序的各个数据包的哈希值index组成传输包体进行传输,接收方可以直接依据其中的会话ID将同组传输包体统一存储,依据各个数据包对应的哈希值index向发送方获取对应的数据包,从而实现数据传输。由于本发明将数据与设备解耦,即组网中的数据不再于某台设备有直接的联系。因此,即使某台设备脱离组网,其他设备也能基于数据包对应所有数据包的编号(即哈希值index)在组网中全网搜索,从其他设备中获取相应的数据,而不受设备限制。本发明基于分布式同步的方案,实现真正意义的去中心化,无需考虑设备断线重连的问题,同时又能解决设备间传输数据不对等问题。
进一步的,所述设备B还包括:
获取模块,用于设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包;
第二存储模块,用于设备B依据接收到的所有数据包获取所述信息A,并存储至本地。
进一步的,所述设备B还包括:
断线重连模块,用于断线重连的设备B依据断线前最后一次接收到的传输包体中的哈希值index,向设备A请求继续未完成的传输。
进一步的,设备A还包括:
第一线程创建模块,用于设备A创建GATT CLIENT线程、GATT SERVER线程和路由表;
第一写入模块,用于设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
第二写入模块,用于设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将传输包体写入设备B;
设备B还包括:
第二线程创建模块,用于设备B创建GATT CLIENT线程、GATT SERVER线程和路由表;
第三写入模块,用于设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中。
进一步的,所述第一写入模块,包括:
广播单元,用于设备A启动GATT SERVER线程,并广播预设的UUID;
第一扫描单元,用于设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
第一添加单元,用于设备A添加设备B的IP地址至自身的对等网络结点的列表中;
第一建立单元,用于设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
第一加入单元,用于设备A将与其成功连接的设备B的设备对象加入自身的路由表中;
所述第三写入模块,包括:
第二扫描单元,用于设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
第二添加单元,用于设备B添加设备A的IP地址至对自身的等网络结点的列表中;
第二建立单元,用于设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
第二加入单元,用于设备B将与其成功连接的设备A的设备对象加入自身的路由表中。
实施例一
请参照图1,本实施例提供一种基于蓝牙点对点的数据传输方法。
下面,以蓝牙自组网络中的其中一个设备,如设备A同步信息至网络内其他设备为例进行说明,方法包括:
S1:蓝牙自组网络内的设备A接收输入的信息A;
具体的,该信息A可以是用户通过任意形式输入至设备A中待同步到蓝牙自组网络内的任意内容,如文字、图片、动画等。
S2:设备A依据所述信息A生成对应的哈希值Token A;
具体的,设备A将依据接收到的信息A生成符合蓝牙传输数据量要求(蓝牙单次传输20bit的限制)的一个哈希值Token A,优选为10个字节。该哈希值Token A用于指向信息A,具体用于其他设备据此验证接收到的信息的完整性。例如,对接收到的信息依据同样的算法生成一个哈希值Token X,通过将其与哈希值Token A对比判断是否已完成信息A所有数据包的同步。
S3:设备A依据所述信息A创建对应的会话ID Session A;
即设备A创建对应未拆分前的信息A的一个会话ID,用于标识完整的待传输信息A,具体用于据此统一存储所有同组的数据包。优选每个会话ID Session X为4字节。
S4:设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
具体的,假设设备A要传输一图片至设备B,则设备A按照蓝牙传输吞吐量20字节,将图片拆分成多个数据包(数据片段),每个数据包为20字节。
S5:设备A依据拆分顺序生成各个数据包对应的哈希值index;
在一具体实施方式中,设备A依据上述步骤S4的拆分顺序对拆分得到的每一个数据包进行编号;然后对应每一个数据包的编号生成哈希值index。
假设设备A顺序拆分得到的各个数据包的编号依次为A1、A2、A3…;则分别对应生成哈希值index A1、哈希值index A2、哈希值index A3…。
每一个数据包对应的哈希值index,不仅标识着对应的数据包本身,同样也标识这数据包在所有数据包中的排列位置。在其他设备进行数据包同步时,能依据对应的哈希值index获取对应的数据包,还能据此获取其上一个或者下一个数据包,实现有序性地获取所有的数据包,而不受设备的限制(如断线重连等情况)。
在另一具体实施方式中,还可以通过创建双向链表来实现对各个数据包对应的排列位置与其哈希值index的关联。具体的,包括:
1、设备A创建一个与信息A对应的第一双向链表;
2、设备A将每个数据包对应的哈希值index存入第一双向链表的各结点;具体从第一个结点开始一个哈希值index对应一个结点的顺序存入。优选的,对应拆分获取数据包的顺序,有序地存入第一双向链表的各结点。假设拆分依次得到数据包A1、数据包A2和数据包A3,则将数据包A1对应的index A1存入第一双向链表的第一个结点,数据包A2对应的哈希值index A2存入第二个结点,以此列推。
3、建立所述第一双向链表与其内包含的所有哈希值index之间的关联关系,以及其内各个哈希值index与其对应的结点编号的关联关系。
该步骤能保证后续设备A接收设备B请求发送过来的用于请求获取数据包的到哈希值index时能快速定位到其存储位置,即第一双向链表。
S6:将各个数据包的哈希值index分别与所述哈希值Token A和所述会话IDSession A一起组成传输包体,获取对应数据包个数的传输包体集合;
具体的,以数据包A1为例,即将其对应的哈希值index A1和信息A对应的哈希值Token A和会话ID Session A一起组合成一个传输包体A1’;其他的数据包类同。其中,每个传输包体均含有信息A对应的哈希值Token A的目的在于定位信息A和验证完整性;由于对应信息A拆分获取的每个传输包体中都包含相同的会话ID Session A,因此会话IDSession A可以用于对传输包体进行归类,统一同组的传输包体。
S7:设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
对应上述步骤S5的第一个具体实施方式,该步骤可以依据传输包体的编号顺序发送至自组网内的其他设备进行同步;
对应其第二个具体实施方式,则设备A依序发送所述第一双向链表各结点对应的哈希值index至其他设备进行同步。
下面,以自组网中的其中一个设备(假设为设备B)与设备A的同步过程展开进行说明:
S8:设备B接收设备A发送过来的第一个传输包体;
假设第一个传输包体的编号为A1,对应哈希值index A1。
S9:设备B创建会话对象SA,并以所述第一个传输包体中的会话ID Session A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
具体的,设备B将从接收到的第一个传输包体中提取出会话ID Session A;然后,创建会话对象SA,将第一传输包体存入会话对象SA;再以会话ID Session A为键,以会话对象SA为值存入哈希表中。
对应上述步骤S5的第二个具体实施方式,设备B还将创建第二双向链表,以存储接收到的各个哈希值index;存储方式与第一双向链表相同,在此不进行复述。第二双向链表的建立,能有助于其他设备从设备B获取完整的信息A。
对应该步骤的一具体实施方式,还包括设备B依据哈希值index获取对应数据包的过程:
S91:设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包。
S10:当设备B再次接收到包含会话ID Session A的其他传输包体时,则依据所述哈希表,将所述其他的待传输包体存入会话对象SA中。
在该步骤之后,对应上述步骤S91的具体实施方式,还包括:
S11:设备B完成所有数据包的同步后,还包括依据接收到的所有数据包计算对应的哈希值Token B,然后比较计算得到的哈希值Token B和传输包体中包含的哈希值TokenA,若一致,则证明所获取的信息A’为设备A所要同步的信息A。
自组网内的其他设备从设备A同步信息A的处理机制与上述设备B的处理机制一致,在此不进行复述。
实施例二
本实施例对应实施例一,提供一具体运用场景:
以商场发布的广告消息为例,所应用到的技术是基于蓝牙自身组网后的点对点传输技术。现以设备A、设备B和设备C之间的数据传输同步为例进行说明,设备A、设备B和设备C均处于同一个商场内,设备A作为某一商铺用于发布优惠信息的蓝牙设备,设备B和设备C可以是商场中的蓝牙设备,也可以是消费者的蓝牙设备。
首先,设备A、设备B和设备C通过蓝牙自身组网的能力进行组网。
然后,设备A接收到广告信息A的输入;
设备B如上述设备A操作;
设备C如上述设备A操作;
设备A根据广告A生成10个字节的哈希值Token A;
设备A根据广告A创建4个字节会话ID SessionA;
设备B如上述设备A操作;
设备C如上述设备A操作;
设备A根据广告A的信息长度按20个字节进行分包并进行编号index A;
设备B如上述设备A操作;
设备C如上述设备A操作;
设备A根据广告A将各个index A分别与哈希值TokenA及会话ID SessionA一起放入长度为20个字节的包体中。
设备B如上述设备A操作;
设备C如上述设备A操作;
设备A发送各个包体给设备B;
设备B发送各个包体给设备C;
设备C发送各个包体给设备A;
设备A接收到设备B和设备C发来的包体,解析包体;
设备A从设备B发送来的包体中取出会话Session B;
设备A创建会话对象SB,并以Session B为键,SB为值放入哈希表中存储;
设备A发送接收到的包体至设备C及设备B。
设备A接收到会话ID为Session B的同组包体,从哈希表中找出SessionB所对应的SB并将该包体放入SB进行处理。
SA处理同组包体后,并获取的数据保存至本地。
设备B和设备C均同设备A的处理机制一致。
本实施例是基于去中心化的设计,也就是说数据和设备之间是没有任何的关联关系。当设备接入网络时,就会从蓝牙的广播中拿到数据存放的服务接口,接着根据该服务接口获取全部的数据。
实施例三
本实施例对应实施例一,在其基础上做进一步扩展,对蓝牙自组网的方式做限定,使其还能不受设备数量限制的基于蓝牙自组网,并在网内的各个设备之间实现实施例一的数据同步方案。
现阶段,目前蓝牙组网的情况下,IOS能支持8台手机进行连接,而Android则只能支持5台手机连接。如果要超过以上设备连接数限制的话,按照现有的设备是无法达到的。因此,如果要应用在聊天、图片、语音同步聊天发送的场景下,由于单台设备连接数的上限,使得多台现有的蓝牙4.0设备之间无法真正的实现网内数据传输。
下面,将通过本实施例解决蓝牙组网设备数量受限的问题,并能实现目标设备断线后重连仍具备获取完整数据源的能力。
本实施例对实施例一的基于蓝牙点对点的数据传输方法进行改进,具体的,设备A与设备B(蓝牙自组网内其他设备之间类同)建立蓝牙通讯连接的过程包括:
1、设备A和设备B分别创建各自的GATT CLIENT线程、GATT SERVER线程和路由表;
2、设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
3、设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中;
具体而言,即步骤2和步骤3可以具体为:
设备A和设备B分别启动各自的GATT SERVER线程,并广播预设的UUID;
设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
设备B添加设备A的IP地址至对自身的等网络结点的列表中;
设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
设备A添加设备B的IP地址至自身的对等网络结点的列表中;
设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
设备B将与其成功连接的设备A的设备对象加入自身的路由表中;
设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
设备A将与其成功连接的设备B的设备对象加入自身的路由表中。
4、设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将待同步的传输包体写入设备B,实现数据包同步。
在一具体实施方式中,本实施例可以包括以下过程:
首先,设备A启动GATT SERVER线程。
进一步的,设备A的GATT SERVER线程启动后,发送预设的UUID所对应的GAP广播。
进一步的,设备B启动GATT CLIENT的线程。
进一步的,设备B的GATT CLIENT线程启动后,自动扫描到***预设的UUID,将符合***预设的UUID的设备A的IP地址添加到对等网络结点中。
进一步的,设备B的GATT CLIENT遍历对等网络结点的列表,连接至远端设备A的GATT SERVER。
进一步的,设备A的GATT CLIENT遍历对等网络结点的列表,连接至远端设备B的GATT SERVER。
进一步的,设备B连接设备A成功后将远端设备A的设备对象加入到路由表中,如果连接失败,则将远端设备A的对象从路由表中移除。
实施例四
本实施例对应实施例一,提供一种基于蓝牙点对点的数据传输***,包括蓝牙连接的至少两个设备;所述至少两个设备包括设备A和设备B;
请参阅图2,设备A包括:
第一接收模块A1,用于接收输入的信息A;
第一生成模块A2,用于设备A依据所述信息A生成对应的哈希值Token A;
创建模块A3,用于设备A依据所述信息A创建对应的会话ID Session A;
拆分模块A10,用于设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
第二生成模块A4,用于设备A依据拆分顺序生成各个数据包对应的哈希值index;
组包模块A5,用于将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID Session A一起组成传输包体,获取对应数据包个数的传输包体集合;
发送模块A6,用于设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B包括:
第二接收模块B1,用于设备B接收设备A发送过来的第一个传输包体;
处理模块B2,用于设备B创建会话对象SA,并以所述第一个传输包体中的会话IDSession A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
第一存储模块B3,用于当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述待传输包体存入会话对象SA中。
进一步地,所述设备B还包括:
获取模块B4,用于设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包;
第二存储模块B5,用于设备B依据接收到的所有数据包获取所述信息A,并存储至本地。
进一步地,所述设备B还包括:
断线重连模块B6,用于断线重连的设备B依据断线前最后一次接收到的传输包体中的哈希值index,向设备A请求继续未完成的传输。
实施例五
本实施例对应上述实施例三,对实施例四的***做进一步的限定,在实施例一的***基础上,请参阅图3,设备A还包括:
第一线程创建模块A7,用于设备A创建GATT CLIENT线程、GATT SERVER线程和路由表;
第一写入模块A8,用于设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
第二写入模块A9,用于设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将传输包体写入设备B;
设备B还包括:
第二线程创建模块B7,用于设备B创建GATT CLIENT线程、GATT SERVER线程和路由表;
第三写入模块B8,用于设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中。
进一步地,所述第一写入模块A8,包括:
广播单元A81,用于设备A启动GATT SERVER线程,并广播预设的UUID;
第一扫描单元A82,用于设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
第一添加单元A83,用于设备A添加设备B的IP地址至自身的对等网络结点的列表中;
第一建立单元A84,用于设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
第一加入单元A85,用于设备A将与其成功连接的设备B的设备对象加入自身的路由表中;
所述第三写入模块B8,包括:
第二扫描单元B81,用于设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
第二添加单元B82,用于设备B添加设备A的IP地址至对自身的等网络结点的列表中;
第二建立单元B83,用于设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
第二加入单元B84,用于设备B将与其成功连接的设备A的设备对象加入自身的路由表中。
综上所述,本发明提供的一种基于蓝牙点对点的数据传输方法及其***,利用数据分布式同步方式,使组网内的数据与具体设备解耦,实现即使某台设备断网,也能从网内其他设备获取相应的数据,并且不会出现消息不对等问题,达到真正意义的去中心化;进一步地,还能实现不受设备数量限制的进行设备之间的数据互通。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种基于蓝牙点对点的数据传输方法,其特征在于,包括:
蓝牙自组网络内的设备A接收输入的信息A;
设备A依据所述信息A生成对应的哈希值Token A;
设备A依据所述信息A创建对应的会话ID Session A;
设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
设备A依据拆分顺序生成各个数据包对应的哈希值index;
将各个数据包的哈希值index分别与所述哈希值Token A和所述会话ID Session A一起组成传输包体,获取对应数据包个数的传输包体集合;
设备A发送所述传输包体集合中的各个传输包体至所述蓝牙自组网络内的其他设备;
设备B接收设备A发送过来的第一个传输包体;
设备B创建会话对象SA,并以所述第一个传输包体中的会话ID Session A为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述传输包体存入会话对象SA中;
还包括:
设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包;
设备B依据接收到的所有数据包获取所述信息A,并存储至本地。
2.如权利要求1所述的一种基于蓝牙点对点的数据传输方法,其特征在于,还包括:
断线重连的设备B依据断线前最后一次接收到的传输包体中的哈希值index,向设备A请求继续未完成的传输。
3.如权利要求1所述的一种基于蓝牙点对点的数据传输方法,其特征在于,还包括:
设备A和设备B分别创建各自的GATT CLIENT线程、GATT SERVER线程和路由表;
设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中;
设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将传输包体写入设备B。
4.如权利要求3所述的一种基于蓝牙点对点的数据传输方法,其特征在于,所述设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中;设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中,具体为:
设备A和设备B分别启动各自的GATT SERVER线程,并广播预设的UUID;
设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
设备B添加设备A的IP地址至对自身的等网络结点的列表中;
设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
设备A添加设备B的IP地址至自身的对等网络结点的列表中;
设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
设备B将与其成功连接的设备A的设备对象加入自身的路由表中;
设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
设备A将与其成功连接的设备B的设备对象加入自身的路由表中。
5.一种基于蓝牙点对点的数据传输***,其特征在于,包括蓝牙连接的至少两个设备;所述至少两个设备包括设备A和设备B;
设备A包括:
第一接收模块,用于接收输入的信息A;
第一生成模块,用于设备A依据所述信息A生成对应的哈希值Token A;
创建模块,用于设备A依据所述信息A创建对应的会话ID Session A;
拆分模块,用于设备A依据蓝牙传输吞吐量将信息A拆分成两个以上的数据包;
第二生成模块,用于设备A依据拆分顺序生成各个数据包对应的哈希值index;
组包模块,用于将各个数据包的哈希值index分别与所述哈希值Token A和所述会话IDSession A一起组成传输包体,获取对应数据包个数的传输包体集合;
发送模块,用于设备A发送所述传输包体集合中的各个传输包体至蓝牙自组网络内的其他设备;
设备B包括:
第二接收模块,用于设备B接收设备A发送过来的第一个传输包体;
处理模块,用于设备B创建会话对象SA,并以所述第一个传输包体中的会话ID SessionA为键,会话对象SA为值存入哈希表;同时,存储第一个传输包体至会话对象SA;
第一存储模块,用于当设备B再次接收到包含会话ID Session A的传输包体时,则依据所述哈希表,将所述传输包体存入会话对象SA中;
所述设备B还包括:
获取模块,用于设备B依据接收到的传输包体中的哈希值index,向设备A获取对应的数据包;
第二存储模块,用于设备B依据接收到的所有数据包获取所述信息A,并存储至本地。
6.如权利要求5所述的一种基于蓝牙点对点的数据传输***,其特征在于,所述设备B还包括:
断线重连模块,用于断线重连的设备B依据断线前最后一次接收到的传输包体中的哈希值index,向设备A请求继续未完成的传输。
7.如权利要求5所述的一种基于蓝牙点对点的数据传输***,其特征在于,设备A还包括:
第一线程创建模块,用于设备A创建GATT CLIENT线程、GATT SERVER线程和路由表;
第一写入模块,用于设备A将与其GATT CLIENT线程连接的设备B的设备对象写入路由表中,所述设备对象包括GATT SERVER线程的服务地址;
第二写入模块,用于设备A依据其路由表中设备B的设备对象的GATT SERVER线程的服务地址,将传输包体写入设备B;
设备B还包括:
第二线程创建模块,用于设备B创建GATT CLIENT线程、GATT SERVER线程和路由表;
第三写入模块,用于设备B将与其GATT CLIENT线程连接的设备A的设备对象写入路由表中。
8.如权利要求7所述的一种基于蓝牙点对点的数据传输***,其特征在于,所述第一写入模块,包括:
广播单元,用于设备A启动GATT SERVER线程,并广播预设的UUID;
第一扫描单元,用于设备A启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备B;
第一添加单元,用于设备A添加设备B的IP地址至自身的对等网络结点的列表中;
第一建立单元,用于设备A的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备B的蓝牙通讯连接;
第一加入单元,用于设备A将与其成功连接的设备B的设备对象加入自身的路由表中;
所述第三写入模块,包括:
第二扫描单元,用于设备B启动其GATT CLIENT线程后,自动扫描到与自身预设的UUID一致的设备A;
第二添加单元,用于设备B添加设备A的IP地址至对自身的等网络结点的列表中;
第二建立单元,用于设备B的GATT CLIENT线程遍历自身的列表,依据列表中的蓝牙设备IP地址建立与设备A的蓝牙通讯连接;
第二加入单元,用于设备B将与其成功连接的设备A的设备对象加入自身的路由表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910003770.4A CN111404663B (zh) | 2019-01-03 | 2019-01-03 | 一种基于蓝牙点对点的数据传输方法及其*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910003770.4A CN111404663B (zh) | 2019-01-03 | 2019-01-03 | 一种基于蓝牙点对点的数据传输方法及其*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111404663A CN111404663A (zh) | 2020-07-10 |
CN111404663B true CN111404663B (zh) | 2022-12-09 |
Family
ID=71413135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910003770.4A Active CN111404663B (zh) | 2019-01-03 | 2019-01-03 | 一种基于蓝牙点对点的数据传输方法及其*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111404663B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114301632B (zh) * | 2021-12-02 | 2023-11-10 | 北京天融信网络安全技术有限公司 | 一种IPsec数据处理方法、终端及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281213A (zh) * | 2013-04-18 | 2013-09-04 | 西安交通大学 | 一种网络流量内容提取和分析检索方法 |
CN106850001A (zh) * | 2017-01-06 | 2017-06-13 | 南京明伟达电子科技有限公司 | 一种用于蓝牙广播的动态数据传输方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009139914A1 (en) * | 2008-05-15 | 2009-11-19 | Nortel Networks Limited | Method and system for transmission of fragmented packets on a packet-based communication network |
-
2019
- 2019-01-03 CN CN201910003770.4A patent/CN111404663B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281213A (zh) * | 2013-04-18 | 2013-09-04 | 西安交通大学 | 一种网络流量内容提取和分析检索方法 |
CN106850001A (zh) * | 2017-01-06 | 2017-06-13 | 南京明伟达电子科技有限公司 | 一种用于蓝牙广播的动态数据传输方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN111404663A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10999784B2 (en) | Method for smart device to access network, mobile terminal, cloud server, device, and system | |
CN108681965B (zh) | 离线节点的区块链网络交易处理方法和装置 | |
US12047287B2 (en) | Data transmission method and apparatus, network adapter, and storage medium | |
US10931735B2 (en) | Application discovery | |
CN106375270B (zh) | 令牌生成并认证的方法及认证服务器 | |
EP3701667B1 (en) | Anonymity system for goods delivery | |
CN104836814B (zh) | 智能硬件云端接入控制方法及其相应的装置 | |
CN110719221B (zh) | 即时通信方法、装置、设备及存储介质 | |
JP6580132B2 (ja) | メディアコンテンツに関連付けられた情報を提供する方法および装置 | |
CN110263579B (zh) | 一种数据处理方法、***及相关设备 | |
CN101217431A (zh) | 同步移动终端、网络电视、网络相册的图片的方法及*** | |
US10742650B2 (en) | Communication system and computer readable storage medium | |
CN113242462B (zh) | 一种实现融合终端的投屏方法和装置 | |
CN111404663B (zh) | 一种基于蓝牙点对点的数据传输方法及其*** | |
CN110311855B (zh) | 用户消息处理方法、装置、电子设备及存储介质 | |
US20230087220A1 (en) | Data processing method and apparatus based on instant messaging, device, and storage medium | |
CN109617817B (zh) | 一种mlag组网的转发表项的生成方法及装置 | |
CN110943962B (zh) | 一种认证方法、网络设备和认证服务器以及转发设备 | |
CN113766031B (zh) | 一种笔记资源存储方法、装置及相关设备 | |
KR101972349B1 (ko) | 모바일 스토리지 장치를 이용한 서비스 플랫폼 제공 방법 및 그 장치 | |
US20230334726A1 (en) | Blockchain-based data processing method and apparatus, device, storage medium, and program product | |
CN111200804B (zh) | 基于蓝牙传输的数据同步方法及其*** | |
WO2018188073A1 (zh) | 内容部署方法及分发控制器 | |
CN115987717A (zh) | 一种隧道报文处理方法、装置、电子设备及存储介质 | |
US11234032B2 (en) | Method of managing the right of access to a digital content |
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 |