问题描述
我在做蓝牙socket编程,对BlueZ提供的socket有一些疑问。
当我们处理 TCP/IP 套接字编程时,我们通常可以选择 TCP 或 UDP 作为我们的传输协议。据我所知,这两个协议是互斥的(我们只能选择其中之一)。
但是,我发现 BlueZ 为我们提供了 L2CAP 和 RFCOMM 套接字。例如,在 pybluez
中,我们可以选择 bluetooth.L2CAP
或 bluetooth.RFCOMM
作为参数来构造套接字。
import bluetooth
server_sock = bluetooth.BluetoothSocket( bluetooth.RFCOMM ) # or bluetooth.L2CAP
我的问题是:L2CAP
和 RFCOMM
不是在蓝牙堆栈中执行不同的功能和不同的级别吗? 换句话说,我猜它们都是必不可少,那怎么可能只选择其中一个作为协议来构造socket呢?
我是不是误会了什么?还是只是代码中指定的socket只是决定了socket在蓝牙栈中的入口位置,L2CAP和RFCOMM都还在运行?如果是这样,为什么 BlueZ 为我们提供两个不同的套接字条目?
我已经阅读了这里的介绍:https://people.csail.mit.edu/albert/bluez-intro/x95.html,我知道通过指定 L2CAP 或 RFCOMM,我们可以有不同的设置,例如端口数。但是我仍然不知道要使用哪些协议以及它们为什么存在。
我是蓝牙新手,非常感谢您的帮助!谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)