作者: Sam (甄峰) sam_code@hotmail.com
SDP(service discoveryprotocol:服务发现协议)提供了一个方法,让应用程序检测哪些服务是可用的并探测这些可用服务的特性。
服务发现协议(SDP或BluetoothSDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetoothclient发现可用bluetoothserver服务和它们的特征的方法。这个协议定义了客户如何能够寻找基于特定属性的服务而不让客户知道可用服务的任何知识。SDP提供发现新服务的方法,在当客户登录到正在操作的蓝牙服务器的一个区域时是可用的时。
SDP提供了一套SDP server和SDP client之间的通讯方法。 SDPserver维护着一个服务条目列表,这个列表存放着SDPserver对应的服务以及服务特性。每个服务条目对应一个单独的服务。SDPclient可以通过发送请求得到SDP server维护的这个服务条目list.
如果SDPclient或者联系于client之上的应用程序决定使用某个service,则打开一个针对此服务的连接到服务提供者去使用此服务。SDP只是提供侦测service以及特性的方法,但不提供如何使用这些service的方法.
每个bluetooth device最多有一个SDP server. 如果某个device只作为client.则不需要拥有SDPserver.而一个bluetooth device可以同时为SDP client和SDP server.
服务条目(Service Record):
一个service就是某个实体提供一些信息,执行某种动作,或控制资源代表另一个实体。一个service可以由软件,硬件或软硬件结合提供。
SDP server维护的service条目包含在service record中。
SDP server中,每个service record由一个32位数与别的record区别。注意,只是在这个SDPserver内。
当SDP server添加或删除某个service时,不会主动提供给client.
Service 属性:
每个属性描述一个service的特征。
service属性包含两部分:
attribute ID + attribute Value.
属性ID是一个16bit的值,用来和Service record内的其它属性区别开来。
Service Class:
每个server是 service class的一个实例。serviceclass定义了service(此class的实例)的每个特性。属性对应attribute ID,属性value的格式,
每个serviceclasss也指定为一个的标识符。这个标识符被包含在属性ServiceClassIDList中。并描述为UUID。
Search forservice:
service search功能允许SDP client得到包含在service record 中的service属性。
可以使用属性的Universally Unique Identifiers1 (UUIDs)得到属性。