0

現在、Android デバイスでサンプルの BluetoothChat プログラムを使用してプログラムを開発しています。これは、参照できる Web サイトです: 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 です。したがって、受信者は 5 つの個別のメッセージを受信する必要があります。ただし、受信者は 4 つのメッセージを受信する場合があり、1 つのメッセージは 12341234 です。パターンは一意ではありません。2 つのメッセージを持つ受信者 3 のメッセージが 12341234 の場合もあります。5 つの個別のメッセージを受信する完全に実行される場合もあります。

どちら(送信者または受信者、またはその両方)に問題があるかわかりません。このような問題を修正するにはどうすればよいですか?たくさんのThx〜

4

1 に答える 1

0

書き込みと読み取りの間の1対1の対応を想定しているようです。多くの場合、そのように動作しますが、保証はありません。実際に見られる奇妙な動作は典型的なものです。

その結果、(socket.read 経由で) 受け取ったデータをメッセージに分割する責任があります。

通常、固定長のメッセージを使用するか、メッセージ ヘッダーにメッセージの長さを含めます。固定長のメッセージを使用すると、物事は本当に単純化されますが、通常は十分な柔軟性がありません。

于 2012-04-05T20:27:49.100 に答える