2011-08-10 28 views
0

私は、ソケットプログラミングを利用してAndroidプロジェクトを開始しました。プラットフォームはAndroid 3.0です。プラットフォーム要件のため、私はAsyncTaskでソケット操作を適用しています。Android 3.0ソケットレスポンス待ち時間

私はサーバーに接続し、コマンドを正常に送信しましたが、受信した応答が不完全になるという問題があります。コマンドを送信した後、応答が完全に来るまで待つ必要があります。それ以外の場合は部分的な応答です。私が待っていたときに完全な応答を得る方法は、デバッグモード中です。私はしばらく待ってから、応答変数を利用する次のコード行に進み、完全な期待結果を得ました。

私はタイマー

Timer myTimer = new Timer(); 

myTimer.wait(2000); 

を入れてみましたが、それはちょうど全体のレスポンスが全く動作しないように。どんな提案も大歓迎です。

+0

応答が完了したことを他端に示すためにセンチネル値を使用していますか? –

+0

@Shane Wealti 私の側から特別に送られた値はありませんが、コマンドプロンプトのような行インジケータの先頭はいつもあります: ServerName> – honour

答えて

0

まず、この問題は発生していないはずです。ネットワーク接続に問題がある可能性があります。これは、どのプラットフォームでも遅延が発生しないためです。しかし、プログラマチックに取り組みたいのであれば、読んでください。

ので、あなたは、そのためにタイマーを使用したくない

a)はさえも待機した後、あなたが値、および

Bを持っている特定することはできませんあなたがなります)あなたが価値をすぐに得るならば、不必要に物事を遅らせる。

より良いオプションは、受け取った値をループ内でチェックして、完全であるかどうかを確認し、一度そうであれば、次のビットに移動するコードを持つことです。

+0

あなたが提案している解決策は、毎回得るつもりです。私は今、私がテスト環境にいるのでデータが完全であることを知っています。すべてが静的で、あなたの提案はリアルタイムの解決策ではありません。しかし、お時間をいただきありがとうございます。それは有り難いです。 – honour

+0

タイムアウトを追加するだけです。多くの秒が経過し、完全なパケットを受け取っていない、または進捗していない場合、送信エラーとなり、移動します。 – wohanley

+0

私はちょうどエラーint伝送と仮定して移動することはできません。私はその反応に関して他のことを処理する必要があります。 – honour

関連する問題