linux - 如何使用 Bluez L2CAP 发送更多字节?
问题描述
我有以下代码使用 BlueZ 连接到另一台机器并发送数据包:
struct sockaddr_l2 addr = { 0 };
int s, status;
char dest[18] = "DC:FB:48:6B:BF:0B";
int socket1;
int32_t value = 0;
// allocate a socket
socket1 = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP);
// set the connection parameters (who to connect to)
addr.l2_family = AF_BLUETOOTH;
addr.l2_psm = htobs(0x1001);
str2ba( dest, &addr.l2_bdaddr );
status = connect(socket1, (struct sockaddr *)&addr, sizeof(addr));
while( status != 0)
{
status = connect(socket1, (struct sockaddr *)&addr, sizeof(addr));
std::cout << "Waiting for DC:FB:48:6B:BF:0B" << std::endl;
sleep(2);
}
while (true)
{
double data[512] = {0.0};
memset(data, 0, 512);
status = write(socket1, data, 512);
}
如您所见,我只发送了 512 个字节,其他机器读取它们就好了。但是,当我尝试增加到 1000 字节时,其他机器不再接受任何字节并且什么也不做。
在这种情况下如何发送更多字节?我正在使用 Linux CentOS 8。
解决方案
默认情况下,L2CAP 的最大传输速率为 672 字节。我建议您尝试将最大传输单位设置为所需的值。
在此处查看“4.3.1 最大传输单元” 。
推荐阅读
- sql - SQL根据某列随机选择行
- c - C:运行程序后需要输入两次我的值
- jmeter - Jmeter 响应断言
- python-3.x - 如何在 Python 中将 h5 文件转换为 GIF
- c# - 如何知道当前的键盘是不是美国国际键盘?
- python - 在 Python 中加速斯坦福依赖解析
- azure - 修改/更换探针导致 CannotModifyRuleUsedByProbeUsedByVMSS
- azure - 创建 QnA 聊天机器人 Azure 时部署失败
- linux - 构建带有用于测试数据的卷的docker镜像(centos)(postgresql)
- python - POST 后反转 (NoReverseMatch)