5

「サーバー」から「1ミリ秒から10ミリ秒の間」ごとに「サーバーに4096バイトのデータを取得する必要がある」というプロジェクトに取り組んでいますが、「時間がかかりすぎる」、つまり「約300ミリ秒から700ミリ秒」です。 "これにより、アプリケーションでデータが失われます。

以下のスニペットを使用しています

HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://192.168.1.40/ping");
HttpResponse response = client.execute(request);

HttpResponseにかかる時間は、300ミリ秒から700ミリ秒程度です。

どうすればより速く応答を得ることができますか?

これの代わりに、これよりも速くサーバーからの応答を取得するために他に何を使用できますか?

解決策や解決方法を教えてください。

私はグーグルをやって、のような他の方法を経験しましたが、これを使用DataOutputStreamしてByteOutputStreamいません、それもまた時間がかかりすぎますHttpResponse

ヘルプをいただければ幸いです。

4

4 に答える 4

4

応答を速くする前に、応答に現在長い時間がかかっている理由を調査して理解する必要があります。大まかに言えば、次のようになります。

  • クライアント側がリクエストを作成したり、結果を処理したりするのに長い時間がかかる(可能性は低いようです...)
  • 遅いAndroidネットワークプロトコルスタック
  • ローカルネットワーク(WiFiなど)または通信プロバイダーの問題
  • 混雑/過負荷のサーバーまたはサーバー側ネットワーク、または
  • サーバーの実装では悲惨なことです。

次のようなことを行います。

  • 従来のPCでWebブラウザーからの要求を試して、ブラウザーのWeb開発者のものを使用して、要求に時間がかかるかどうか/なぜかかるかを調べてみてください...
  • サーバー側のログを調べたり、リクエストの負荷とタイミング情報を監視したりします
  • 他の提案をお願いします

SPDYを実装すると役立つ場合がありますが、応答時間を500ミリ秒から数十ミリ秒のオーダーに変更することはほとんどありません。この問題は、「HTTPは古くて遅い」よりも根本的なようです。そして、同じ理由が、人々が行った他のすべての提案にも当てはまります。

于 2012-11-30T04:57:28.760 に答える
1

これは不可能です。毎回接続を再作成しています。

サーバーとの永続的な接続を保持する必要があります。永続的なhttp接続を作成してみてください。

それでも問題が解決しない場合は、生のudpパケット(またはその他)を送信してみてください。難しくなりますが、時間がかかりません。

于 2012-11-30T06:52:54.663 に答える
0

SPDYプロトコルを使用します。これにより、応答時間が改善されます。

あなたの場合、毎回接続を作成する必要がなく、ライブ接続が毎回利用できるように、WebSocketを使用できると思います。

于 2012-11-30T04:46:48.097 に答える
0

サーバーがSPDYを有効にしている場合、@sheldonCooperの答えは正しいです。また、Gzip圧縮を追加することもできます。GingerBread以降のすべてのリクエストに追加されましたが、以前のSDKバージョンに追加できます:http://android-developers.blogspot.fr/2011/09/androids-http-clients.html

于 2012-11-30T04:56:53.207 に答える