一种基于DNS‑SD的OCF客户端对AllJoyn服务的发现方法与流程

文档序号:11548637阅读:361来源:国知局
一种基于DNS‑SD的OCF客户端对AllJoyn服务的发现方法与流程

本发明涉及网络技术,具体涉及ocf客户端对alljoyn服务的发现技术。



背景技术:

alljoyn的服务发现机制采用next-generationnameservice(ngns),ngns发现协议采用了通过使用alljoyn申请的多播地址和端口来发送基于多播的mdns。alljoyn服务消费端调用findadvertisename()初始化ngns消息序列,ngns通过多播dns发送基于dns-sd的查询消息;ngns使用alljoyn申请的多播地址和端口来发送基于多播的dns,ipv4组播地址为224.0.0.251,ipv6组播地址为ff02::fb,组播端口号为5353;任何与搜索名字匹配的服务提供端通过单播方式发送dns-sd消息响应服务消费端。

ocf的服务发现是基于coapdiscovery机制。所有发布中的ocf设备加入“allcoapnodes”多播分组,如ipv6中的ff0x::fd或监听端口“5683”。需要发现资源的ocf客户端也加入该多播分组。ocf客户端发送一个发现请求给多播分组和端口“5683”,请求的uri为/oic/res。如果ocf客户端正处在发现指定资源类型的过程中,则它应使用带有指定“rt”参数的查询指令,否则所有的ocf设备都会回复此请求。

可见,alljoyn系统的服务发现机制和ocf的资源发现机制使用两种完全不同的发现协议,因此,alljoyn设备与ocf设备之间无法互相发现。



技术实现要素:

针对现有alljoyn设备与ocf设备之间无法互相发现的问题,需要一种能够实现alljoyn设备与ocf设备之间互相发现的方案。

为此,本发明所要解决的技术问题是提供一种基于dns-sd的ocf客户端对alljoyn服务的发现方法,使得alljoyn设备与ocf设备之间可互相发现。

为了解决上述技术问题,本发明提供的基于dns-sd的ocf客户端对alljoyn服务的发现方法,通过发送符合alljoyn服务发现机制的dns-sd消息去发现alljoyn服务资源。

在本方案中,在ocf客户端,通过ocf的资源发现接口发现alljoyn服务资源,并将该资源生成alljoyn标准的dns-sd查询消息。

在本方案中,ocf客户端的资源发现接口将ocf的resourceuri映射为dns-sd消息中的txt记录的“path={uri}”,对应于alljoyn的对象路径;

将ocf的resourcetype映射为dns-sd消息中txt记录的“name={resourcetype}”,对应于alljoyn的well-knownname;

将ocf的resourceinteface映射为dns-sd消息中txt记录的“if={resourceinterface}”,对应于alljoyn的接口。

在本方案中,以多播的方式发送dns-sd消息。

在本方案中,alljoyn服务端收到dns-sd查询消息后,进行匹配,在alljoyn服务和ocf要发现的资源相互匹配后,返回相应的dns-sd响应消息给ocf客户端。

在本方案中,ocf客户端在接收到dns-sd响应消息后,进行解析得到alljoyn服务的资源属性。

通过本方案可以实现ocf客户端设备对alljoyn服务资源的发现,实现了ocf协议与alljoyn协议互联互通。

附图说明

以下结合附图和具体实施方式来进一步说明本发明。

图1为本方案中dns-sd消息的生成流程图;

图2为本方案中ocf客户端发现alljoyn服务资源的流程图;

图3为本发明实例中ocf客户端发现alljoyn服务资源的流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。

本方案基于dns-sd消息,有效实现ocf客户端对alljoyn服务的发现。由ocf客户端通过发送符合alljoyn服务发现机制的dns-sd消息去发现alljoyn服务资源。

为此,本方案在ocf客户端,使用ocf的资源发现接口去发现alljoyn服务资源,此时使用的alljoyn服务资源符合ocf标准资源定义规范,拥有resourceuri,resourcetype等;ocf客户端的资源发现接口将该资源生成alljoyn标准的dns-sd查询消息,由此实现对ocf客户端设备对alljoyn服务资源的发现。

其中,dns-sd(dns-basedservicediscovery)定义了一种配置dnsptr,srv和txt记录的常规方法。

而alljoyn客户端通过如下名字格式来查询某一dnsptr记录,从而发现某一服务的所有实例:

<service>.<domain>。

dns-sd响应方返回dnssrv和dnstxt记录,且srv和txt有如下的命名格式:

<instance>.<service>.<domain>。

在此基础上,为生成符合alljoyn服务发现机制的dns-sd消息(即alljoyn标准的dns-sd消息),ocf客户端发现资源接口需要提供resourceuri,resourcetype和resourceinterface。

同时,ocf资源与alljoyndns-sd消息之间采用如下的映射规则:

将ocf的resourceuri映射为dns-sd消息中的txt记录的“path={uri}”,对应于alljoyn的对象路径;

将ocf的resourcetype映射为dns-sd消息中txt记录的“name={resourcetype}”,对应于alljoyn的well-knownname;

将ocf的resourceinterface映射为dns-sd消息中txt记录的“if={resourceinterface}”,对应于alljoyn的接口。

据此,本方案中dns-sd消息的生成流程如下(参见图1):

(1)定义要发现的alljoyn服务的resourceuri、resourcetype和resourceinterface,以及ocf客户端应用程序调用findresource()方法;

(2)c++sdk通过进程间通信调用底层栈的资源发现方法ocdoresource()方法;

(3)ocstack接收到待发现alljoyn资源的参数,按照上述对应的映射规则转化封装成dns-sd消息;

(4)调用socket,以多播的方式发送dns-sd消息,其中ipv4组播地址为224.0.0.251,ipv6组播地址为ff02::fb,组播端口号为5353。

基于上述的dns-sd查询消息,ocf客户端在发送dns-sd查询消息后,alljoyn服务端收到该dns-sd查询消息,如果alljoyn服务端拥有和dns-sd查询消息相同的well-knownname,将会返回相应的dns-sd响应消息给ocf客户端,至此,完成ocf客户端对alljoyn服务的发现过程。

由此,ocf客户端基于dns-sd消息发现alljoyn服务的流程如下(参见图2):

(1)alljoyn服务提供端连接alljoynrouter,注册总线对象,申请well-knownname;

(2)alljoyn服务对象开启mdns端口监听;

(3)ocf客户端初始化,调用ocf资源发现接口,寻找alljoyn资源;

(4)ocstack根据发现的alljoyn资源属性生成dns-sd查询消息;

(5)按照mdns多播发送dns-sd查询消息;

(6)alljoyn服务端收到dns-sd查询消息,解析txt记录,匹配对应的well-knownname和接口;

(7)alljoyn服务和ocf要发现的资源相互匹配,alljoyn服务端发送dns-sd回复;

(8)ocf客户端收到dns-sd回复,解析txt记录,得到alljoyn服务的资源属性,完成对alljoyn服务资源的发现过程。

下面以资源发现的实例具体阐述ocf客户端基于dns-sd消息对alljoyn服务的发现过程。

首先,如下表所示,分别为alljoyn标准服务对象和ocf标准资源进行定义:

由此,ocf客户端对alljoyn服务的发现的整个流程如下(参见图3):

(1)alljoyn服务提供端注册总线对象,对象路径为:/org/freedesktop/example,接口为:org.alljoyn.example.test。

(2)alljoyncore向alljoyn路由申请well-knownname:org.alljoyn.example。

(3)alljoyn服务端绑定端口,开启mdns端口监听。

(4)ocf客户端调用资源发现函数,发现资源:

resourcetype:org.alljoyn.example,

resourceuri:/org/freedesktop/example,

resoueceinterface:org.alljoyn.example.test。

(5)ocstack根据alljoyn资源属性生成对应的dns-sd查询消息。

(6)mdns多播发送dns-sd查询消息。

(7)alljoyn服务端通过mdns端口监听,收到dns-sd查询消息,解析txt记录,匹配对应的well-knownname,对象路径和接口;

(8)在alljoyn服务和ocf要发现的资源相互匹配后,alljoyn服务端发送dns-sd回复(单播响应)。

(9)ocf客户端收到dns-sd回复,解析txt记录,得到alljoyn服务的资源属性,完成对alljoyn服务资源的发现过程。

由上实例可知,本方案实现了ocf客户端对alljoyn服务的发现,有效实现了ocf协议与alljoyn协议互联互通。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1