我使用藍牙的RFCOMM編寫了Android應用程序。我通過相同的RFCOMM UUID向Android應用發送1 MB數據。RFCOMM接收數據時丟失了1個L2CAP數據包
我注意到1個L2CAP數據包數據在我的應用程序中遺漏了。有關更多詳情,請參閱以下信息
我的Android手機藍牙支持最大RFCOMM有效載荷是990個字節,因此,遠程裝置發送每個分組L2CAP用的990個字節的有效負載。每當我從遠程設備發送1K數據時,它都被分成2個990和34字節的L2CAP數據包。
在我的Android應用接收到數據之後,我檢查每個1K數據,有我注意到1 L2CAP數據包即,990個字節已在機器人跳過。
我使用分析儀檢查了從遠程設備發送的所有數據。它完全發送1 MB數據而不會失敗。
但是在我的android應用程序中,我無法接收。這與我的應用程序沒有問題,因爲我在此處使用了藍牙聊天示例代碼。
我測試這個幾次,990個字節的丟失的數據的每個I運行測試時間不在1MB的數據相同的索引。
我測試了採用Android 2.2,2.3.3和2.3.6版本的3個手機的每個移動facinf同樣的問題
但同時接收來自RFCOMM套接字的InputStream的數據還我沒有得到任何異常。
如果有人面臨和解決我的問題,請幫助我。
爲了澄清,你是說,接收到的數據流中,你收到了連續字節?換句話說,您發送了「 A <990 bytes> B 」並且收到了「 AB 」? –
@DavidSchwartz我正在那樣做。這在1MB數據中是1次 –
我可以想到很多可能的原因,並且幾乎所有這些都是代碼中的錯誤。試試這個實驗 - 記錄每個調用中接收到的低字節接收函數的字節數。看看它們是否總和你發送的字節數。如果是這樣,並且990字節仍然丟失,那證明你的代碼丟失了它們。 –