本文作者的部落格地址:http://blog.sina.com.cn/samzhen1977
作者:Sam (甄峰)
sam_code@hotmail.com
SDP(service
discovery
protocol:服務發現協議
)提供了一個方法,讓應用程式檢測哪些服務是可用的並探測這些可用服務的特性。
服務發現協議(SDP或Bluetooth
SDP)在藍芽協議棧中對藍芽環境中的應用程式有特殊的含意,發現哪個服務是可用的和確定這些可用服務的特徵。SDP定義了bluetooth
client發現可用bluetooth
server服務和它們的特徵的方法。這個協議定義了客戶如何能夠尋找基於特定屬性的服務而不讓客戶知道可用服務的任何知識。SDP提供發現新服務的方
法,在當客戶登入到正在操作的藍芽伺服器的一個地區時是可用的時。
SDP提供了一套SDP server和SDP client之間的通訊方法。 SDP
server維護著一個服務條目
列表,這個列表存放著SDP
server對應的服務以及服務特性。每個服務條目
對應一個單獨的服務。SDP
client可以通過發送請求得到SDP server維護的這個服務條目list.
如果SDP
client或者聯絡於client之上的應用程式決定使用某個service,則開啟一個針對此服務的串連到服務提供者去使用此服務。SDP只是提供偵
測service以及特性的方法,但不提供如何使用這些service的方法.
每個bluetooth device最多有一個SDP server. 如果某個device只作為client.則不需要擁有SDP
server.而一個bluetooth device可以同時為SDP client和SDP server.
服務條目(Service Record):
一個service就是某個實體提供一些資訊,執行某種動作,或控制資源代表另一個實體。一個service可以由軟體,硬體或軟硬體結合提供。
SDP server維護的service條目包含在service record中。
SDP server中,每個service record由一個32位元與別的record區別。注意,只是在這個SDP
server內。
當SDP server添加或刪除某個service時,不會主動提供給client.
Service 屬性:
每個屬性描述一個service的特徵。
service屬性包含兩部分:
attribute ID + attribute Value.
屬性ID是一個16bit的值,用來和Service record內的其它屬性區別開來。
Service Class:
每個server是 service class的一個執行個體。service
class定義了service(此class的執行個體)的每個特性。屬性對應attribute ID,屬性value的格式,
每個service
classs也指定為一個的標識符。這個標識符被包含在屬性ServiceClassIDList中。並描述為UUID。
Search for
service:
service search功能允許SDP client得到包含在service record 中的service
屬性。
可以使用屬性的Universally Unique Identifiers1 (UUIDs)得到屬性。