0

Java内からJavaアプリケーションによって使用されているバイト数を測定する必要があります(つまり、JVMへの特別なアクセス権がなく、セキュリティマネージャーが処理する必要がありません)が、送受信されたすべてのバイトが必要ですプロトコルヘッダーなどを含みます。誰でもこれを行う方法について良いアイデアを持っていますか?

明らかな動きは、新しい URLConnectionHandler を作成し、メータリングを IO ストリームに挿入することです。ただし、これは、Java アプリケーションとの間で送受信される HTTP/HTTPS メッセージのヘッダー サイズを提供しません。

4

1 に答える 1

2

ワイヤ上の正確なバイト数が必要な場合は、OSの助けを借りて、非常にプラットフォーム固有の方法で行う必要があります。

ネットワークトラフィックは、バブーシュカ人形のセットです。

URLConnectionはヘッダーを追加し、TCPスタックは各パッケージにヘッダーを追加し、ethernetスタックは別のヘッダーを追加します。次に、プログラムの背後で確認応答、再送信などが発生します。次に、DNS要求とルーティングパケットがあります...

アプリのトラフィックを残りのトラフィックから分離するには、特別なルールが必要です。

全体として、かなり絶望的です。

実用的な目的のために、アプリケーションをマシン上にセットアップし、wiresharkなどを使用してトラフィックをキャプチャすることをお勧めします。内部では、説明したとおりにペイロードを測定し、次に外部測定を使用してオーバーヘッドを測定します。

次に、通常の使用でのオーバーヘッドの割合を見積もり、それをアプリのペイロード測定に追加します。

誰も違いに気付かないほど近くにあります。

于 2010-06-23T05:37:29.033 に答える