【发布时间】:2014-01-19 00:30:02
【问题描述】:
根据我从 Bluetooth Essentials for Programmers 中读到的内容,这本书提到了一些我不太明白的点。
RFCOMM 是一种可靠的基于流的协议。 L2CAP 是一种基于数据包的协议,可以配置不同级别的可靠性。
L2CAP 实际上是作为 RFCOMM 的传输协议,所以每个 RFCOMM 连接实际上都封装在一个 L2CAP 连接中。
这真的让我很困惑,因为这两种协议是不同类型的协议(一种是基于流的,另一种是基于数据包的)。所以根据它的解释,我在下面有一些问题。
既然封装了RFCOMM连接,那么串口配置文件(SPP)如何使用RFCOMM连接呢?它也应该使用 L2CAP。
A2DP 使用 L2CAP 连接。这对我来说意味着相同,因为 L2CAP 和 RFCOMM 被封装在 ACL 连接中,这是否意味着 A2DP 使用 ACL 连接?我知道这是不正确的,但如何在这里解释。
感谢您在这里的任何解释。
【问题讨论】:
-
这个网站是为程序员准备的,而不是你在这里问的问题类型,它们不是坏问题,只是不适合 SO。
-
谢谢。我认为这些问题也与蓝牙程序员有关。如果您能解释上述问题,那就太好了。
-
封装可能在“设备”驱动程序级别,所以它对您来说是不可见的,就像您从未“创建”以太网数据包一样,但您仍然可以本地使用 TCP/IP,如何来?同样的,RFCOMM 使用 L2CAP,但并不意味着你需要知道 L2CAP 才能使用
-
好吧,你的意思是程序员只需要创建rfcomm,我们不必知道RFCOMM是封装在L2CAP中的。谢谢你的解释。根据您提到的内容和我从书中读到的内容,我不明白为什么 RFCOMM 需要封装在 L2CAP 中。说 SPP,这可以纯粹使用 RFCOMM 连接。这种封装有什么优势?
-
嘿,@nrathaus 有时会适得其反,这取决于对您上面评论的点赞数。如果不是因为堆栈溢出,我对 L2CAP 的查询不会有如此突出的影响,我很感兴趣,因为我想开始为蓝牙堆栈编码。因此,感谢 SO 并感谢发布问题的 Sam。
标签: bluetooth android-bluetooth rfcomm l2cap