Где данные могут быть буферизованы при соединении rfcomm?

я пытаюсь передать данные между двумя устройствами Bluetooth, когда оба подключены к двум разным компьютерам. Имея hci устройство на каждом из компьютеров, я использую rfcomm для передачи информации между ними.

Я пытаюсь передать 10 МБ случайных данных, чтобы проверить возможности системы. В начале вроде все работает нормально. Через несколько секунд кажется, что между отправителем и получателем возникает задержка, когда иногда данные перестают поступать, а затем получателю внезапно поступает «огромный» объем данных.

Точно так же, как какой-то буфер хранит все данные. Пока я продолжаю отправлять данные, задержка увеличивается. Я пытаюсь понять, где в цепочке может быть такой буфер, или как решить эту буферизацию.

Огромное спасибо :)


person liadd    schedule 21.12.2018    source источник
comment
Вы можете увидеть простой Bluetooth-сокет rfcomm между двумя синими устройствами Bluetooth в моем ответе: stackoverflow.com/a/45046480/7508077   -  person EsmaeelE    schedule 25.12.2018
comment
Код на стороне сервера имеет буфер для сохранения полученных сообщений. рассмотрим вторую строку внутри main(), у нас есть char buf[1024] = { 0 };, и когда она получит сообщение, сохраните ее в буфере: bytes_read = read(client, buf, sizeof(buf));   -  person EsmaeelE    schedule 25.12.2018