如何使用Bluez L2CAP发送更多的字节?

问题描述 投票:0回答:1

我有以下代码,使用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。

linux bluetooth bluez
1个回答
0
投票

默认情况下,L2CAP的最大传输速率是672字节。我建议你尝试将最大传输单位设置为你需要的值。

请看一下 "4.3.1 最大传动装置" 此处.

© www.soinside.com 2019 - 2024. All rights reserved.