在套接字代码中选择蓝牙设备/加密狗 - Bluez Stack

时间:2015-08-19 06:41:01

标签: linux sockets bluetooth rfcomm

我有两个连接到我的linux机器的加密狗,即hci0和hci1,我需要使用套接字通信与外部蓝牙模块通信。 在建立套接字连接时,有什么方法可以选择使用哪个设备? (例如,hci0或hci1,在开始通信时)。

参考资料来源:RFCommSocket

在这个例子中,所有这些都是套接字创建。我能够进行通信和交换数据,但现在我需要能够从哪个设备开始通信。

示例中的Socket Creation如下所示。

 s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

哪个不允许我选择我想要使用的设备,我知道默认情况下系统会选择列表中的第一个设备,但有没有办法指定我可以使用哪个设备?

我的应用程序需要在dongle_a上连接4个设备和连接到dongle_b的4个设备,有没有办法选择启动套接字连接的设备?

1 个答案:

答案 0 :(得分:0)

// bind socket to port 1 of the first available 
// local bluetooth adapter
loc_addr.rc_family = AF_BLUETOOTH;
loc_addr.rc_bdaddr = *BDADDR_ANY;
loc_addr.rc_channel = (uint8_t) 1;
bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr));

绑定到相应的bdaddr地址,而不是BDADDR_ANY