使用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。
发布于 2020-06-16 09:31:12
默认情况下,L2CAP的最大传输速率为672字节。我建议您尝试将最大传输单元设置为所需的值。
看一看"4.3.1最大传输单元“这里。
https://stackoverflow.com/questions/62403744
复制相似问题