我正在使用BlueZ库来管理linux下的蓝牙堆栈。我正在尝试打开一个套接字,该套接字应该与已知UUID的特定服务连接。我已成功尝试按照以下示例在服务器和客户端之间打开套接字:
http://people.csail.mit.edu/albert/bluez-intro/c404.html
还描述了如何在远程主机中探索服务;但是,我无法弄清楚的是如何在连接套接字时指定UUID。这在其他环境中非常简单,就像使用Android库时一样;但是,对于BlueZ,我还没有在网上找到例子。
感谢您的帮助!
斯特凡诺
- 在回复中添加了一些细节......不知道是否正确;如果没有,抱歉
感谢您的帮助!
在我的帖子中,我说我想连接一个带有指定UUID的套接字,因为我想到了一个像createRfcommSocketToServiceRecord这样的函数,可以在以下位置找到:
返回给定某个UUID的套接字。我正在开发两个软件,一个是客户端,另一个是服务器,因此它是我正在创建的服务,而不是标准服务。我在服务器上使用指定的UUID发布此类服务,我想从客户端连接到它。服务器运行正常,因为使用Android平台,利用上面提到的createRfcommSocketToServiceRecord方法,我能够使用正确的服务连接到服务器。
你发布的例子也非常清楚,但不幸的是它是在Python中,而(我忘了指出)我使用Bluez作为C库。我能够利用SDP并检查远程服务器上的服务;但是,在设置套接字的时候,我看不到如何指定端口。我想到了rc_channel,但据我所知,它是蓝牙通道(范围从1到11或类似的东西)。能否指出在客户端创建套接字时我应该能够指定端口的位置?我能在哪里找到sdp正在处理的复杂结构中的正确端口? - 提到:
http://people.csail.mit.edu/albert/bluez-intro/x604.html
再次感谢您的帮助!
答案 0 :(得分:1)
您没有通过UUID连接套接字。您使用套接字连接到远程设备并浏览其SDP以发现它提供的UUID,并将其映射到套接字端口。以下是使用PyBluez,BlueZ上方的python包装器的这个过程的示例 http://people.csail.mit.edu/albert/bluez-intro/x290.html