2

写真をダウンロードするアプリケーションがあり、使用している帯域幅を管理しようとしています。

使用済み:

  • JDK1.7
  • アパッチ HTTP クライアント

私はそれで写真をロードしています:

client = new DefaultHttpClient(cm, params);
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, new Integer(15000));
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, new Integer(15000));
client.getParams().setParameter(CoreConnectionPNames.TCP_NODELAY, false);

....

HttpResponse response = client.execute(httpget, new BasicHttpContext());
System.exit(0);

....

次に、HttpGet メソッドを使用して、http://www.iconki.com/icons/System/16x16-Network-and-Security/earth.png を読み込みます(例として)。

これが問題です。

この画像が 1K であることを知っているので、帯域幅の使用量は 1K + いくつかのヘッダーと余分なパケットになると予想する必要があります。ただし、コンテンツを完全に取得せず、メソッドの実行直後に終了しても、6K の帯域幅を使用しています。呼び出される HttpGet メソッドごとに常に 6K のオーバーヘッドがあるということですか? クライアントの実行でループしようとしました。

for (int i = 0; i < 10; i++)
{
    httpget = new HttpGet(URL); 
    setMethodeHeaders(httpget);
    response = client.execute(httpget, new BasicHttpContext());
    httpget.abort();
    Thread.sleep (1000);
    System.out.println ("Looping...");
}

私は60Kの使用量を得ました。10k の画像としては非常に大きいです。コンテンツの長さを取得すると、1K の結果が得られます。6Kのものではありません。

質問は次のとおりです。

  • 実際の HttpClient 帯域幅の使用状況を追跡する方法はありますか?
  • このオーバーヘッドを削減する方法はありますか?
4

0 に答える 0