RFCOMM получает данные с отсутствующим 1 пакетом L2CAP
Я написал приложение для Android, используя блютуз RFCOMM. Я отправляю 1 МБ данных в приложение для Android через тот же RFCOMM UUID.
Я заметил, что в моем приложении пропущен 1 пакет данных L2CAP. Смотрите ниже информацию для более подробной информации.
Мой мобильный телефон Android с поддержкой максимальной полезной нагрузки RFCOMM составляет 990 байт, поэтому удаленное устройство отправляет каждый пакет L2CAP с полезной нагрузкой 990 байт. Всякий раз, когда я отправляю данные 1 КБ с удаленного устройства, они делятся на 2 пакета L2CAP по 990 и 34 байта каждый.
Получив данные в своем приложении для Android, я проверил данные размером 1 КБ, там я заметил 1 пакет L2CAP, т. Е. 990 байт было пропущено в Android.
Я проверил всю отправку данных с удаленного устройства с помощью анализаторов. Он отлично отправляет 1 МБ данных без каких-либо сбоев.
Но только в моем приложении для Android я не могу получить. Это не проблема с моим приложением, потому что я использовал пример кода Bluetooth Chat здесь.
Я проверял это несколько раз, 990 байт потерянных данных не совпадают с индексом в 1 МБ данных каждый раз, когда я запускаю тест.
Я проверил это с 3 мобильными телефонами версий Android 2.2, 2.3.3 и 2.3.6, каждая из которых сталкивалась с одной и той же проблемой.
Но я не получаю никаких исключений при получении данных из InputStream сокета RFCOMM.
Если кто-нибудь сталкивался и решил мою проблему, пожалуйста, помогите мне.
2 ответа
Возможно, вы захотите очистить поток после отправки всех данных. Возможно, RFCOMM может буферизовать некоторые данные, ожидающие заполнения его PDU. Посмотрите это - OutputStream:: flush ()
Можете ли вы проверить с помощью инструмента HCIDump данные ACL, передаваемые / получаемые между двумя устройствами. Если данные совпадают с пакетами данных HCL ACL / отправлены и получены, то L2CAP на принимающем конце отбрасывает некоторый пакет.
Посмотрите на эту ссылку и посмотрите, может ли mtu вызвать эту проблему.
http://people.csail.mit.edu/albert/bluez-intro/x559.html
Спасибо Маниваннан