具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
图1示出了本发明实施例的一种用于会话建立的方法的流程示意图,
如图1所示,在一些说明性的实施例中,所述方法,应用于第一设备,包括以下几个步骤:
步骤S101,接收至少一个第二设备的广播消息;
其中,所述广播消息携带设备列表,所述设备列表用于存储所有能与所述第二设备通信的第三设备的设备信息和各所述第三设备提供的至少一种服务的服务信息;所述服务信息可以包括服务和相应的接口的信息;
在现有的点对点通信中,设备通过广播告知网络中除本设备以外的设备的相关信息(如其所支持的服务和接口的信息、设备信息和一些其它的信息),但设备一般不会通过广播的形式告知可以与其进行通信的其它设备的情况;而设备之间由于受各种条件的限制,例如通信距离或支持的协议的不同,使得彼此之间无法通信;在本方案中,当设备通过传统的广播消息获知了网络中其它设备(此处所述的其它设备是指本设备可以进行通信的设备)的相关信息后,广播消息不仅携带了本设备的相关信息,还可以携带所述其它设备的相关信息,例如在广播中可以通过设备列表的形式,将上述其它设备的设备信息和各设备提供的至少一种服务告知给网络中的除本设备以外的设备;通过上述的方式,设备之间不仅可以获知彼此的相关信息,也可以获知对方设备可以直接通信的设备的相关信息;
步骤S102,根据所述广播消息携带的设备列表,确定用于提供服务的目标设备;
本文所述的第二设备是指可以与本设备和所述第三设备直接建立会话的一类设备,所述第二设备可以是一个或多个,在此处不进行限定;所述的第三设备是可以与所述第二设备直接建立会话的一类设备;所述目标设备是本设备从所述第三设备中选出的,需要向其获取相应服务,由于条件的限制,本设备又无法直接与其建立会话的一类设备;
在步骤S102中,本设备通过查看所述设备列表中各所述第三设备提供的至少一种服务的服务信息,选择能提供所需服务的所述第三设备作为所述目标设备;
在上述过程中,本设备根据所述设备列表中记录的目标设备的设备信息,判断出目标设备是本设备不能直接建立会话的设备,从而触发步骤S103;
步骤S103,从所述设备列表中存储有所述目标设备的设备信息的至少一个第二设备中,选择其中一个所述第二设备作为代理设备;
当所述设备列表中存储有所述目标设备的设备信息的第二设备为一个,则选该第二设备为代理设备,请求其为本设备进行代理;
当所述设备列表中存储有所述目标设备的设备信息的第二设备为多个,则需要从所述多个第二设备中选一个作为代理设备,并请求其为本设备进行代理;
在一些说明性的实施例中,选择的方式可以是:
随机挑选;或者,
选择最先收到广播消息的所述设备列表中存储有所述目标设备的设备信息的第二设备为代理设备;或者,
根据各所述设备列表中存储有所述目标设备的设备信息的第二设备的广播消息中携带的设备列表中记录的设备的数量进行选择,选择数量最少或最多的第二设备为代理设备;选择数量最少的第二设备作为代理设备,可以使得网络中设备的负载相对均衡;选择数量最多的第二设备作为代理设备,是因为这样的设备更具有优势(如位置优势或支持多种通信协议等);或者,
按照所述设备列表中存储有所述目标设备的设备信息的第二设备的优先级等方式进行选择;或者,
将所述设备列表中存储有所述目标设备的设备信息的多个第二设备的信息反馈给用户,让用户进行选择,等等;
步骤S104,通过所述代理设备与所述目标设备建立会话;
在一些说明性的实施例中,所述通过所述代理设备与所述目标设备建立会话,具体包括:
向所述代理设备发送会话建立请求;所述会话建立请求携带所述目标设备的设备信息和本设备所需的所述目标设备的服务信息;所述目标设备的设备信息可以是目标设备的标识,或目标设备的IP地址(网络协议地址)或MAC地址(硬件地址)等接入信息;所述目标设备的服务信息可以是服务的标识;
接收所述代理设备反馈的确认消息;所述确认消息携带所述代理设备的会话端口;
当收到代理设备的确认消息后,则说明本设备可以通过所述代理设备与所述目标设备建立会话;所述确认消息中携带的所述代理设备的会话端口(如端口号),即代理设备为本设备和所述目标设备建立会话专门提供的端口;
当本设备需要通过代理设备与所述目标设备的建立会话时,通过所述代理设备的会话端口与所述目标设备建立会话;此过程可以是本设备向代理设备发送请求,在该请求中携带所述会话端口;当会话建立成功时,代理设备会给本设备反馈一个会话ID(标识),本设备每次通过代理设备与所述目标设备进行通信时,需要携带该会话ID;
在一些说明性的实施例中,所述代理设备发送的广播消息还携带所述代理设备的设备信息和代理标识,则所述向所述代理设备发送会话建立请求具体包括:
根据所述代理设备的设备信息向所述代理设备发送所述会话建立请求,所述会话建立请求携带所述代理标识,所述代理标识用于请求所述代理设备为本设备进行代理。
图2示出了本发明实施例的一种用于会话建立的方法的流程示意图,
如图2所示,在一些说明性的实施例中,所述方法,应用于代理设备,包括以下几个步骤:
步骤S201,发送广播消息;
所述广播消息携带设备列表,所述设备列表用于存储所有能与本设备通信的第三设备的设备信息和各所述第三设备提供的至少一种服务的服务信息;
所述设备列表包括本设备可以直接建立会话的所有第三设备的设备信息和各所述第三设备设备提供的至少一种服务的服务信息;上述设备列表可以是用户预置的,或是根据各所述第三设备的广播获取的;
步骤S202,接收第一设备发送的第一会话建立请求;
所述第一会话建立请求携带所述目标设备的设备信息和所述目标设备的服务信息;所述目标设备是所述第一设备根据所述广播消息从所述第三设备中选出的,用于向所述第一设备提供服务的设备;
所述目标设备的服务信息可以是某服务的服务标识,该服务是所述第一设备需要所述目标设备提供的服务,所述目标设备的设备信息可以是目标设备的标识,或目标设备的IP地址或MAC地址等接入信息;
可选的,所述第一会话建立请求还携带代理标识,所述代理标识用于告知本设备进行相应的代理服务;
步骤S203,根据所述第一会话建立请求,执行相应的会话代理的操作;
本设备收到第一会话建立请求后,即获知第一设备请求本设备作为代理设备,并且第一设备需要获取所述目标设备的服务;
在一些说明性的实施例中,所述根据第一会话建立请求,执行相应的会话代理的操作,包括:
向所述目标设备发送第二会话建立请求,告知所述目标设备所述第一设备需要与其建立会话并获取服务;所述第二会话建立请求携带所述第一设备的设备信息(如第一设备的标识)、所述第一设备所需的所述目标设备的服务信息(服务的标识)以及本设备的会话端口(端口号);其中,所述会话端口是本设备专门为第一设备和目标设备建立会话提供的端口;
在接收到所述目标设备反馈的第一确认消息后,向所述第一设备反馈确认为其代理的第二确认消息;所述第二确认消息携带所述会话端口;
在一些说明性的实施例中,在所述向所述第一设备反馈确认为其代理的第二确认消息之后,还包括:
接收所述第一设备发送的携带所述会话端口的第三会话建立请求,在接收到所述第三会话建立请求后,通过该请求中携带的会话端口,即获知第一设备当前需要与目标设备建立会话,本设备会根据该会话端口分配一个与该会话端口相对应的会话标识ID,该会话ID是所述第一设备和所述目标设备在会话过程中需要携带的参数;
向所述目标设备发送携带所述会话端口和会话ID的会话邀请请求消息;现有技术中的接收一方发起的会话建立请求的设备只是一个请求的接收者,并不承担再次邀请和发起会话的操作,而在本方案中,由于本设备已经确认为第一设备进行代理,所以本设备在收到目标会话建立请求后,会主动向目标设备发送会话邀请请求消息,邀请所述目标设备参与到与第一设备建立的会话中,并同时将会话ID告知目标设备;
在接收到所述目标设备用于反馈所述会话邀请请求消息的第三确认消息后,向所述第一设备发送第四确认消息,告知所述第一设备已成功建立会话;所述第三确认消息和所述第四确认消息均携带所述会话ID。
图3示出了本发明实施例的一种用于会话建立的方法的流程示意图,
如图3所示,在一些说明性的实施例中,所述方法,应用于目标设备,包括以下几个步骤:
步骤S301,发送第一广播消息;
所述第一广播消息携带本设备的设备信息和本设备提供的至少一种服务的服务信息;
当然对于本设备来说,本设备也可能在获取到其它设备(如本文所述的第二设备)的广播后,将各设备的设备信息和提供的至少一种服务以设备列表的形式添加到广播中,形成新的广播;
步骤S302,通过代理设备与第一设备建立会话;
在一些说明性的实施例中,在所述通过代理设备与所述第一设备建立会话之前,还包括:
接收所述代理设备发送的第二会话建立请求;所述第二会话建立请求携带所述第一设备的设备信息、所述第一设备所需的本设备的服务信息以及所述代理设备的会话端口;
通过所述第三会话建立请求,获知第一设备需要与本设备建立会话,并获取本设备提供的哪种服务,此外还获得了代理设备提供的专门用于此会话的会话端口;
若同意与所述第一设备建立会话,则向所述代理设备发送用以反馈所述第二会话建立请求的第一确认消息;
若不同意,则向所述代理设备反馈用以表示拒绝的消息;
在一些说明性的实施例中,在所述接收所述代理设备发送的第二会话建立请求之前,还包括:
接收所述代理设备发送的第二广播消息,所述第二广播消息携带所述代理设备的设备信息(如:代理设备的标识、IP地址或MAC地址、代理设备提供的至少一种服务的服务信息和端口等等);
根据所述代理设备的设备信息,与所述代理设备建立连接;
在一些说明性的实施例中,所述通过代理设备与第一设备建立会话,包括:
接收所述代理设备发送的携带所述会话端口和会话ID的会话邀请请求消息;所述会话ID是代理设备为本设备和所述第一设备分配的用于会话时需要携带的参数,所述会话ID对应于所述会话端口;
向所述代理设备发送用于反馈所述会话邀请请求消息的第三确认消息;所述第三确认消息携带所述会话ID。
下面以一个具体的实施例来说明本方案,在该实施例中主要涉及设备A、设备C和设备D;在网络中,设备A、设备B、设备C和设备D的关系如图4a所示,设备A可以与设备B和设备C通信,但是由于距离原因设备A或设备B无法与设备D进行通信,但设备D离设备C较近,因此设备D可以与设备C进行通信;假设各设备之间是通过Alljoyn技术进行通信,如图2所示,下面以设备A与设备D的建立会话的过程为例,阐述建立会话的具体过程:
步骤S501,网络中的各设备进行周期的about广播;
设备A、B、C、D分别进行周期的about功能广播,广播的内容包括该设备所提供的服务和接口信息,设备信息(可以是设备的标识、IP地址、MAC地址、设备类型等)等;
在这个过程中,由于设备A、B和C距离较近,因此设备A能够收到设备B和设备C的about消息,设备B收到设备A和设备C的about消息,设备C收到设备A、B和设备D的about消息;由于设备D距离设备A和B较远,因此设备D仅能收到设备C的about消息;设备之间通过发送和接收about广播,获知相邻设备的信息;
步骤S502,设备C在收到各设备的about广播后,进行新一轮的周期的about广播;
假设设备A将设备B和C提供的服务和接口信息存放在邻近设备列表中,同理设备B、C和D也进行相同的步骤;在第二次about广播时,各个设备将会在about消息中加入邻近设备列表的信息,邻近设备列表包括邻近设备的设备信息,邻近设备所支持的服务和接口;
在此流程中,可以理解为设备C在此新一轮的周期的about广播中携带了设备D的设备信息和设备D所提供的服务信息;当设备A收到设备C的about消息后,可以获知设备D的设备信息、服务和接口信息;同理,设备B也能够获知设备A的设备信息、服务和接口信息;设备D能够获取设备A、B的信息以及服务和接口信息;
步骤S503,设备A需要设备D的服务,选择设备C作为代理设备;
设备A从设备C发来的about消息,获取到设备D的服务和接口信息;当设备A需要设备D的某服务时,设备A选择设备C为代理设备;
步骤S504,设备A向设备C发送第一会话建立请求;
该第一会话建立请求包括设备D的标识,和请求的服务和接口的信息;
步骤S505,设备C向设备D发送第二会话建立请求;
设备C收到该请求后,判断是要发送给设备D的会话请求,设备C向设备D发送第二会话建立请求,其中包含设备A的标识,以及设备C所能提供的会话端口(端口号);
步骤S506,设备D向设备C反馈第一确认消息;
设备D允许设备A访问服务,向设备C发送第一确认消息,告知设备C允许访问;
步骤S507,设备C向设备A反馈第二确认消息;
设备C收到设备D的确认消息后,向设备A发送包含会话端口的第二确认消息;
步骤S508,设备A通过设备C与设备D建立会话;
设备A通过确认消息中的会话端口与设备C建立会话,设备D同样可以通过所述第二会话建立请求中的会话端口号与设备C建立会话;下面举例具体说明设备A和设备D如何通过设备C建立会话,所述步骤S508可以包括如下几个子步骤:
步骤S5081,设备A向设备C发送第三会话建立请求;所述第三会话建立请求携带所述第二确认消息中携带的会话端口;
步骤S5082,设备C向设备D发送会话邀请消息;
设备C收到该第三会话建立请求后,根据该会话端口获知设备A要与设备C建立会话,则分配一个会话ID,所述会话ID对应于所述会话端口;设备C主动向设备D发送会话邀请消息,邀请设备D加入与设备A之间的会话,所述会话邀请消息携带所述会话端口,以及会话ID;
步骤S5083,设备D向设备C反馈第三确认消息;
设备D收到会话邀请消息后,确认加入该会话,则发送第三确认消息,所述第三确认消息中携带所述会话ID,可选的,还携带所述会话端口;
步骤S5084,设备C向设备A反馈第四确认消息;
设备C收到设备D反馈的确认消息后,将会话ID添加到确认消息中一同发送给设备A,告知设备A已成功建立会话,并且在后续的会话中需要携带该会话ID;
当会话建立成功后,设备A与设备D可以通过设备C建立的会话进行通信,并且每个消息中均携带所述会话ID;
在一些说明性的实施例中,如图4b所示,若设备C和设备E均可以作为代理设备,则在步骤S503中,设备A选择代理设备的方式可以是:
设备A按照收到about消息先后顺序选择代理节点,如先收到C的about消息,选择C为代理设备;或
设备A按照设备所包含邻近设备的个数来选择代理节点,选择邻近设备数少的设备作为代理设备(该考虑是基于负载均衡),或者选择邻近设备数多的设备作为代理设备(考虑基于该设备的位置优势等);或
设备A按照默认设置或设备的优先级等方式选择代理设备。
图6示出了本发明实施例的一种用于会话建立的装置的结构示意图,
在一些说明性的实施例中,所述装置600,应用于第一设备,包括:
接收单元601,用于接收至少一个第二设备的广播消息;
确定单元602,用于根据所述广播消息携带的设备列表,确定用于提供服务的目标设备;所述设备列表用于存储所有能与所述第二设备通信的第三设备的设备信息和各所述第三设备提供的至少一种服务的服务信息;
选择单元603,用于从所述设备列表中存储有所述目标设备的设备信息的至少一个第二设备中,选择其中一个所述第二设备作为代理设备;
会话单元604,用于通过所述代理设备与所述第三设备建立会话。
在一些说明性的实施例中,若所述设备列表中存储有所述目标设备的设备信息的第二设备为多个,所述选择单元603,包括:
第一选择子单元6031,用于按照接收到的各所述设备列表中存储有所述目标设备的设备信息的第二设备的广播消息的先后顺序,选择最先收到的所述广播消息所对应的所述第二设备作为所述代理设备;或,
第二选择子单元6032,用于根据各所述设备列表中存储有所述目标设备的设备信息的第二设备携带的所述设备列表中包括的邻近设备的个数,选择数量少的所述第二设备作为所述代理设备;或,
第三选择子单元6033,用于按照默认设置或各所述设备列表中存储有所述目标设备的设备信息的第二设备的优先级,从所述多个第二设备中选择出所述代理设备。
在一些说明性的实施例中,所述确定单元602,包括:
第一确定子单元6021,用于查看所述设备列表中各所述第三设备提供的至少一种服务的服务信息;
第二确定子单元6022,用于选择能提供所需服务的所述第三设备作为所述目标设备。
在一些说明性的实施例中,所述会话单元604,包括:
第一会话子单元6041,用于向所述代理设备发送会话建立请求;所述会话建立请求携带所述目标设备的设备信息和本设备所需的所述目标设备的服务信息;
第二会话子单元6042,用于接收所述代理设备反馈的确认消息;所述确认消息携带所述代理设备的会话端口;
第三会话子单元6043,用于通过所述代理设备的会话端口与所述目标设备建立会话。
在一些说明性的实施例中,所述代理设备发送的广播消息还携带所述代理设备的设备信息和代理标识,则所述第一会话子单元6041,包括:
连接单元60411,用于根据所述代理设备的设备信息向所述代理设备发送所述会话建立请求,所述会话建立请求携带所述代理标识。
图7示出了本发明实施例的一种用于会话建立的装置700的结构示意图;
在一些说明性的实施例中,所述装置700,应用于代理设备,包括:
广播单元701,用于发送广播消息;所述广播消息携带设备列表,所述设备列表用于存储所有能与本设备通信的第三设备的设备信息和各所述第三设备提供的至少一种服务的服务信息;
第一接收单元702,用于接收第一设备发送的第一会话建立请求;所述第一会话建立请求携带目标设备的设备信息和所述目标设备的服务信息;所述目标设备是所述第一设备根据所述广播消息从所述第三设备中选出的,用于向所述第一设备提供服务的设备;
代理单元703,用于根据第一会话建立请求,执行相应的会话代理的操作。
在一些说明性的实施例中,所述代理单元703,包括:
第一代理子单元7031,用于向所述目标设备发送第二会话建立请求,所述第二会话建立请求携带所述第一设备的设备信息、所述第一设备所需的所述目标设备的服务信息以及本设备的会话端口;
第二代理子单元7032,用于在接收到所述目标设备反馈的第一确认消息后,向所述第一设备反馈确认为其代理的第二确认消息;所述第二确认消息携带所述会话端口。
在一些说明性的实施例中,所述装置700,还包括:
第二接收单元704,用于所述第二代理子单元7032向所述第一设备所述第二确认消息之后,接收所述第一设备发送的携带所述会话端口的第三会话建立请求;
邀请单元705,用于向所述目标设备发送携带所述会话端口和会话ID的会话邀请请求消息;
确认单元706,用于在接收到所述目标设备用于反馈所述会话邀请请求消息的第三确认消息后,向所述第一设备发送第四确认消息,告知所述第一设备已成功建立会话;
所述第三确认消息和所述第四确认消息均携带所述会话ID。
图8示出了本发明实施例的一种用于会话建立的装置的结构示意图;
在一些说明性的实施例中,所述装置800,应用于目标设备,包括:
广播单元801,用于发送第一广播消息,所述第一广播消息携带本设备的设备信息和本设备提供的至少一种服务的服务信息;
会话单元802,用于通过代理设备与第一设备建立会话。
在一些说明性的实施例中,所述装置800,还包括:
第一接收单元803,用于会话单元802通过代理设备与所述第三设备建立会话之前,接收所述代理设备发送的第二会话建立请求;所述第二会话建立请求携带所述第一设备的设备信息、所述第一设备所需的本设备的服务信息以及所述代理设备的会话端口;
反馈单元804,用于向所述第一设备发送用以反馈所述第二会话建立请求的第一确认消息。
在一些说明性的实施例中,所述装置800,还包括:
第二接收单元805,用于所述第一接收单元803接收所述代理设备发送的第二会话建立请求之前,接收所述代理设备发送的第二广播消息,所述第二广播消息携带所述代理设备的设备信息;
连接单元806,用于根据所述代理设备的设备信息,与所述代理设备建立连接。
在一些说明性的实施例中,所述会话单元802,包括:
第一会话子单元8021,用于接收所述代理设备发送的携带所述会话端口和会话ID的会话邀请请求消息;
第二会话子单元8022,用于向所述代理设备发送用于反馈所述会话邀请请求消息的第三确认消息;所述第三确认消息携带所述会话ID。
采用上述实施例,可达到以下效果:
扩大了设备的服务范围,使得设备的通信范围不再受客观条件的限制,例如通信距离或所支持的网络协议;
设备更加智能,在不更改硬件的条件下,完成设备间的通信。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。