具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
图1示出了本发明实施例的一种服务发现方法的流程示意图,
如图1所示,在一些说明性的实施例中,所述一种服务发现方法,包括以下几个步骤:
步骤S101,侦听到第一网络广播的第一服务信息;
步骤S102,向至少一个除第一网络以外的其它网络转播所述第一服务信息;
在一些说明性的实施例中,所述第一服务信息包括与服务相关的原始数据;步骤S102,包括:
从所述服务信息中提取所述原始数据;
根据所述至少一个其它网络的协议,将所述原始数据进行封装,得到至少一个所述其它网络可识别的第二服务信息;
向所述至少一个其它网络广播所述第二服务信息;
在上述过程中,侦听到该第一服务信息后,会对第一服务信息进行数据解包,例如:去除第一网络协议下数据包的头和尾,提取出原始数据(与服务内容相关的,无需进行协议转换可直接使用的数据),然后再根据至少一个其它网络的协议,直接对原始数据进行封装,即获得第二服务信息;
原始数据可以包括服务的标识、以及一些与提供服务相关的数据;
可选的,若所述第二服务信息中还包括提供的服务的设备的标识,而原始数据中不包括广播所述第一服务信息的设备的标识,则在封装所述原始数据获得所述第二服务信息的同时,将所述设备的标识也封装在所述第二服务信息中;
可选的,若所述其它网络的各设备只需要知道本设备(如网关)维护的各网络中提供的服务,则所述第二服务信息可以不携带第一网络的标识或设备的标识,当其它网络的各设备需要该服务时,可以通过本设备间接获取该服务;
在一些说明性的实施例中,在向所述至少一个其它网络广播所述第二服务信息之前,还包括:
根据所述第一服务信息,判断出需要转播所述第一服务信息;所述判断的过程,具体包括:
检测所述第一服务信息中是否含有预设的转播标识,若有,则需要转播;反之,则结束流程;
在一些说明性的实施例中,在所述侦听到第一网络广播的第一服务信息之前,还包括:
开启侦听服务,对至少一个待侦听网络进行侦听;所述待侦听网络包括所述第一网络;
在一些说明性的实施例中,所述第一服务信息携带所述第一网络的标识;在根据所述至少一个其它网络的协议,将所述原始数据进行封装之前,还包括:
从所述第一服务信息中提取所述第一网络的标识;
根据所述第一网络的标识,确定出所述至少一个除第一网络以外的其它网络。
下面以一个具体的实施例来说明本方案,在该实施例中涉及网关、蓝牙网络的设备1和WiFi无线网络的设备2;所述设备1与设备2分别与网关相连,设备1在其所在的蓝牙网络中广播其提供的服务信息,网关将设备1广播的服务信息向本网关维护的其它网络进行转播,所述其它网络包括所述WiFi网络,以使非蓝牙网络的设备,如设备2获知设备1上的服务信息;如图2所示,具体过程如下:
步骤S201,启动Trans应用;
网关上实现一个应用(Trans)负责转播接收到的服务广播,在网关上启动Trans应用,即开启网关转播服务广播的功能;
步骤S202,设定侦听服务广播面向的子网;
在网关上维护着多个子网,可以在启动Trans应用的同时,设定面向部分或全部子网进行服务广播的侦听;假设,网关设定面向WiFi网络和蓝牙网络侦听服务广播;
步骤S203,启动总线侦听服务广播端口;
在Trans应用上设定侦听的网络后,网关启动相应的总线端口进行侦听;具体的应用层-总线端口-子网络端口之间的关系,可以如图3所示:
不同的底层通信技术建立了不同的网络,设备1支持蓝牙BT网络,设备2支持WiFi网络,而网关支持多个网络,由于在本实施例中,网关只对蓝牙和WiFi网络进行侦听,所以在图3中的总线BUS端口下只绘出了蓝牙端口和WiFi端口;
步骤S204,从总线端口获得接收到的服务信息;
当设备1发出服务广播后,由于启动了侦听,因此网关的蓝牙BT端口能够发现该服务广播(即设备1上提供的服务的服务信息);蓝牙BT端口收到了该服务信息后,即总线BUS端口亦收到了该服务信息,Trans应用从总线端口获得所述服务信息;
步骤S205,提取服务信息特征字段;
网关从获取到的服务信息中提取用以表示设备1提供服务的特征字段;
步骤S206,判断是否需要转播;
网关上运行的Trans应用收到该服务信息后,根据提取出的特征字段,判断该信息中是否含有用以表示转播的标识;若有,则转播该服务信息,否则,不转播该服务信息;
判断的过程可以通过识别服务信息中的特征字段;这种特征字段可以理解为是一种代表转播含义的标识;因此,如果设备1广播服务信息时,可能就已经通过在服务信息中加入特征字段的方式设定该服务信息能否被网关转播;如:假设服务命名规则为域名反转形式,则服务信息为一些字母与句点的组合,可在其中加入Transfer字符串标识该服务信息需要被转播,如:Transfer.org.Bus.sample;网关识别到“Transfer”字段即获知该服务信息需要被转播;
步骤S207,提取传输特征,得到服务信息所在的子网;
所述服务信息包括网络的标识,提取所述服务信息中的传输特征(即网络的标识),得到该服务所在的网络为蓝牙网络;
步骤S208,建立新的服务广播,设定发送接口为面向其余的子网;
Trans应用调用总线BUS接口建立新的服务广播,设定该广播面向其余的子网,如WiFi网络;
在这个过程中,也可以在建立新的服务广播时,设定向部分非蓝牙网络的子网进行转播,而非全部非蓝牙网络的子网;
步骤S209,通过总线的广播接口发出服务广播;
新的服务广播通过总线BUS接口发出,WiFi网络中的设备2可通过网关转播的服务广播发现设备1所提供的服务;
在上述过程中,在步骤S209通过总线的广播接口发出服务广播之前;还包括:从侦听到的服务信息中提取用以表示服务内容的原始数据,根据需要广播的至少一个子网的通信协议,封装成各子网可识别的服务广播;这个过程不属于应用层中具体的一个步骤,具体的实施过程可以是:
底层蓝牙BT端口收到数据后,会将数据传递到总线BUS端口,传递过程中蓝牙协议栈会做数据解包,因此,总线收到的数据已经是原始数据了;当总线BUS接口需要发出新的服务广播时,只要调用TCP/IP协议栈的相关发送接口传入数据就行,TCP/IP协议栈会将数据封装成WiFi网络可以识别的新的服务广播;
在一些说明性的实施例中,步骤S206和步骤S207之间没有必然的顺序关系;
在一些说明性的实施例中,步骤S202为可选步骤,因为网关可以根据预设自动进行侦听,或者,网关自动对所有子网进行侦听;
在一些说明性的实施例中,步骤S205和S206为可选步骤,例如设备1在向网关注册时就将提前申请了对其服务广播进行转播的服务,即网关收到设备1的服务广播即进行转播,而不需要再次判断;
在一些说明性的实施例中,步骤S207为可选步骤,例如当网关仅对蓝牙BT网络进行侦听,则不需要提取传输特征即知道该服务信息来源于蓝牙BT网络;
上述实施例可以应用于以下场景:虽然上述实施例中网关是进行服务广播转播的实体,但是并不限于本发明中方法的应用范围,比如在这个场景中手机也能提供服务广播转播的功能;
家庭中的冰箱、空调等家电设备(设备2)具有WiFi联网功能,都连入家庭网络;血压仪、智能手表等健康设备(设备1)具有蓝牙功能,组成了蓝牙网络。家电设备与健康设备上都运行着同一种点对点通信协议,该协议对底层WiFi或蓝牙BT网络做了抽象封装,因此基于该协议的应用程序仅需调用该协议提供的统一接口便可完成网络通信,屏蔽了底层网络的细节;
空调上运行的应用具有根据人体皮肤毛孔扩张情况自动调节温度的能力,但空调所在的WiFi网络没有提供该服务的设备;
同样运行此点对点协议的手机进入网络,由于手机同时具有WiFi与蓝牙BT联网功能,故它既在家电设备组成的WiFi网络中,也在健康设备组成的蓝牙BT网络中,手机上运行着Trans应用,能够转播服务广播;
手机通过侦听蓝牙网络,发现智能手表提供监测人体皮肤的服务,能够实时反馈人体皮肤毛孔扩张情况,手机的Trans应用进一步通过提取该服务特征字段,判断该服务广播允许转播;于是,Trans应用提取该服务的传输特征,发现该服务位于蓝牙网络内;之后,它通过协议的总线BUS接口建立面向WiFi网络的服务广播,将监测人体皮肤的服务广播到WiFi网络内;
空调发现手机转播的服务,便可进一步与智能手表建立连接,获取人体皮肤相关的数据,实现智能调节温度。
图4示出了本发明实施例的一种服务发现装置的结构示意图,
在一些说明性的实施例中,所述服务发现装置400,包括:
侦听单元401,用于侦听到第一网络广播的第一服务信息;
转播单元402,用于向至少一个除第一网络以外的其它网络转播所述第一服务信息;
在一些说明性的实施例中,所述第一服务信息包括与服务相关的原始数据;所述转播单元402,包括:
第一提取单元4021,用于从所述第一服务信息中提取所述原始数据;
封装单元4022,用于根据所述至少一个其它网络的协议,将所述原始数据进行封装,得到至少一个所述其它网络可识别的第二服务信息;
广播单元4023,用于向所述至少一个其它网络广播所述第二服务信息;
在一些说明性的实施例中,所述服务发现装置400,还包括:
判断单元403,用于所述广播单元4023向所述至少一个其它网络广播所述第二服务信息之前,根据所述第一服务信息,判断出否需要转播所述第一服务信息;所述判断单元403包括:
检测单元4031,用于通过检测所述第一服务信息中是否含有预设的转播标识,若有,则需要转播;反之,则结束流程;
在一些说明性的实施例中,所述服务发现装置400,还包括:
开启侦听服务单元404,用于开启侦听服务,并对至少一个待侦听网络进行侦听;所述待侦听网络包括所述第一网络;
在一些说明性的实施例中,所述第一服务信息携带所述第一网络的标识;所述服务发现装置400,还包括:
第二提取单元405,用于所述封装单元4022根据所述至少一个其它网络的协议,将所述原始数据进行封装之前,从所述第一服务信息中提取所述第一网络的标识;
确定单元406,用于根据所述第一网络的标识,确定出所述至少一个除第一网络以外的其它网络。
采用上述实施例,可达到以下效果:
不同通信技术网络的设备也可以互相发现各自提供的服务。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。