Bluetoothソケットの奇妙な動作が発生しています(私の意見では)。誰かがそれを明確にしてくれるかどうか知りたいです。
状況:
Bluetooth ソケットで接続された 2 つの Android アプリケーションがあります。
write(byte[] message)
1 つ目は、出力ストリームをシンプルにします。read(byte[] buffer)
2 つ目は、入力ストリームをシンプルにします。
リーダー側では、1024バイトのバッファーを使用します。送信者は、受信者のバッファー サイズよりも少し大きいメッセージを送信します: 1024 + 108バイト (常に同じメッセージ)。
さて、動作は次のとおりです。
リーダー アプリでは、ほとんどの場合、1024バイトの最初のチャンクを受け取り、(予想どおり) バッファーがいっぱいになり、次に108バイトの 2 番目のチャンクを受け取ります。
しかし、非常に頻繁に (おそらく 40% の確率で) 1008バイトの最初のチャンクを受け取り、次に124バイトの 2 つ目のチャンクを受け取ります。
重要な bluetooth の概念を見逃すことを恐れているので、これを本当に理解したいと思います。最初は、メッセージ全体が受信されたかどうかを知るために、読み取られたバイト数とバッファー サイズを比較することを考えていましたが、この実験は、おそらく良い考えではないことを示しています。
誰かが私にこの振る舞いを説明できますか?
前もって感謝します。