SDP是基于C/S架构的,即客户端可以发送请求来获取服务端的信息
客户端和服务端不是固定的,一个设备既可以做客户端也可以做服务端,即谁发出请求谁做客户端,谁发出响应谁就做服务端。
服务记录:
每个profile都会提供一个服务记录,即通过sdp就能发现该profile所支持的一些信息,以便以后连接。如耳机支持a2dp、avrcp、hfp、spp,那么在耳机中就会有三条服务记录
每条服务记录必有ServiceRecordHandle(attribute ID 0x0000)和 ServiceClassIDList两个属性,ServiceRecordHandle用来唯一的标识某一条服务记录,ServiceClassIDList是表示该服务记录是干什么的(即是什么profile),即通过ServiceRecordHandle找到服务记录,通过ServiceClassIDList知道这条服务记录是干什么的。
如在spp的服务记录中,ServiceRecordHandle为1000,在hfp的服务记录中,ServiceRecordHandle为1001,那么在SDP_SERVICE_SEARCH_RSP PDU中,耳机就能将ServiceRecordHandleList当做参数放在这个responds的pdu中,这样手机就能拿到耳机所支持的服务记录(即手机就知道了耳机所支持的profile)
这就是spp的服务记录所包含的属性,其他profile也类似。
服务属性:
ServiceRecordHandle:用来唯一的标识某一条服务记录
ServiceClassIDList:表示该服务记录是干什么的(即是什么profile)
ProtocolDescriptorList:这条属性是描述该条服务记录(某个profile)底层用的哪些协议BluetoothProfileDescriptorList:用来描述本身profile的一些细节,如profile的版本
标签:profile,SDP,SERVICE,记录,ServiceClassIDList,PROTOCOL,ServiceRecordHandle,服务,服务端 From: https://www.cnblogs.com/zj-studyrecoding/p/17921857.html