作者: Sam (甄峰) sam_code@hotmail.com
?
SDP(service discoveryprotocol:服務發(fā)現(xiàn)協(xié)議)提供了一個方法,讓應用程序檢測哪些服務是可用的并探測這些可用服務的特性。
服務發(fā)現(xiàn)協(xié)議(SDP或BluetoothSDP)在藍牙協(xié)議棧中對藍牙環(huán)境中的應用程序有特殊的含意,發(fā)現(xiàn)哪個服務是可用的和確定這些可用服務的特征。SDP定義了bluetoothclient發(fā)現(xiàn)可用bluetoothserver服務和它們的特征的方法。這個協(xié)議定義了客戶如何能夠尋找基于特定屬性的服務而不讓客戶知道可用服務的任何知識。SDP提供發(fā)現(xiàn)新服務的方法,在當客戶登錄到正在操作的藍牙服務器的一個區(qū)域時是可用的時。
?
SDP提供了一套SDP server和SDP client之間的通訊方法。 SDPserver維護著一個服務條目列表,這個列表存放著SDPserver對應的服務以及服務特性。每個服務條目對應一個單獨的服務。SDPclient可以通過發(fā)送請求得到SDP server維護的這個服務條目list.
?
如果SDPclient或者聯(lián)系于client之上的應用程序決定使用某個service,則打開一個針對此服務的連接到服務提供者去使用此服務。SDP只是提供偵測service以及特性的方法,但不提供如何使用這些service的方法.
?
每個bluetooth device最多有一個SDP server. 如果某個device只作為client.則不需要擁有SDPserver.而一個bluetooth device可以同時為SDP client和SDP server.
?
服務條目(Service Record):
一個service就是某個實體提供一些信息,執(zhí)行某種動作,或控制資源代表另一個實體。一個service可以由軟件,硬件或軟硬件結合提供。
SDP server維護的service條目包含在service record中。
SDP server中,每個service record由一個32位數(shù)與別的record區(qū)別。注意,只是在這個SDPserver內。
?
當SDP server添加或刪除某個service時,不會主動提供給client.
?
Service 屬性:
每個屬性描述一個service的特征。
service屬性包含兩部分:
attribute ID + attribute Value.
屬性ID是一個16bit的值,用來和Service record內的其它屬性區(qū)別開來。
?
?
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)得到屬性。