使用socket rfcomm进行蓝牙连接

时间:2011-03-29 14:47:31

标签: c++ c linux bluetooth

我有两个蓝牙设备,我正在尝试建立两个rfcomm连接,每个设备一个连接。

我正在使用bluez rfcomm socket

addr.rc_family = AF_BLUETOOTH;
addr.rc_channel = (uint8_t) 1;
str2ba( dest, &addr.rc_bdaddr );

// connect to server
s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

// set disconnect timeout to 2sec
struct timeval tv;
tv.tv_sec = 2;
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO,(struct timeval *)&tv,sizeof(struct timeval));

// make connection
status = connect(s, (struct sockaddr *)&addr, sizeof(addr));

如何选择设备进行连接?

3 个答案:

答案 0 :(得分:1)

我相信bluez最多支持16个加密狗。

您可能对此项目中的代码感兴趣: http://diy-machine.blogspot.com/

答案 1 :(得分:1)

你必须在connect()之前调用bind()。

看看这个:

https://github.com/matlo/l2cap_proxy/blob/master/l2cap_con.c#L197

这是l2cap,但我想rfcomm也是可能的。

答案 2 :(得分:0)

你不能这样做,bluez蓝牙堆栈只能在一个加密狗上工作,即本地蓝牙设备。

为了能够拥有一个蓝牙堆栈控件2蓝牙本地加密狗的单一实例将是bluez堆栈的一个重大变化。

相关问题