0

我目前正在使用 android 设备上的示例 BluetoothChat 程序开发我的程序。这是您可以参考的网站:http: //developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html

基于某些原因,我想继续向接收者发送消息。因此,我在 BluetoothChat 类中名为 sendMessage() 的方法上执行此操作。

byte[] send = message.getBytes(); 
for(int i = 0; i < 5; i++)  //simply add a while loop here
mChatService.write(send);

有时,消息会相互干扰。例如消息是 1234。所以接收者应该收到五个单独的消息。但是,接收方可能会收到 4 条消息,其中一条消息是 12341234。模式不是唯一的。有时接收者 3 消息与两条消息是 12341234。有时它运行完美,接收五个单独的消息。

我不知道哪个(发送者或接收者或两者)有问题。如何解决这样的问题?非常感谢~

4

1 回答 1

0

您似乎假设写入和读取之间存在一对一的对应关系。通常它确实以这种方式工作,但不能保证 - 你看到的奇怪行为实际上是典型的。

因此,您有责任将(通过您的 socket.read)接收到的数据分解为消息。

通常你会使用固定长度的消息,或者你会在消息头中包含消息的长度。使用固定长度的消息确实可以简化事情,但通常不够灵活。

于 2012-04-05T20:27:49.100 回答