1

Socket、デスクトップサーバーとの接続を確立しました。一般的には正常に動作しており、残っているバグを見つけようとしています。私が解決できないのは、「送信」ボタンをスパムするときです。個別に送信されることを意図したメッセージを1つのメッセージに結合する場合があります。これはAndroidの問題であり、サーバーの問題ではないと確信しています。何が起こるかの例を次に示します(サーバーからのコンソール出力):

XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}{"control":[],"commands":[]}

これにより、JSONパーサーが正しく機能しなくなります。BluetoothまたはWifiを介してサーバーに接続することができますが、メッセージが結合される問題は、BluetoothSocketではなくWifiを使用しているときにのみ発生することに気付きました。BluetoothSocketがこのように組み合わせるのに十分な遅れがあるとは思わないのは言うまでもありませんが、そこで実行されるトラフィックははるかに少なくなります。送信時にパケットが結合されないようにする方法はありますか?私はオプションを見回しましたが、Socket何を探すべきかわかりませんでした。これが私が送信する方法の例です、かなり基本的です:

mmDataOut.write(buffer);

mmDataOutはただのとDataOutputStreambufferですbyte[]

また、サーバーがasyncsocketタグを使用しているため、asyncsocketタグを追加しましたが、それが何かに影響するかどうかはわかりません。

4

1 に答える 1

5

TCPを使用しているようです。これはTCPの予想される動作であり、それをサポートするにはパーサーをアップグレードする必要があります。

読み取り側からのデータのチャンクに1つのコマンドのみが含まれると安全に想定することはできません。さらに、1回の読み取りでコマンド全体を取得することを想定することもできません。

于 2012-07-12T23:14:51.533 に答える