0

私は最近、ObjectOutputStream と ObjectInputStream を使用して、サーバーとクライアント間の単純な Java ソケット接続を介してオブジェクトを送信する方法を見つけました。画像など、サイズが大きい可能性があるオブジェクトを転送したいのですが、送受信されたデータの量の進行状況を追跡するスレッドを配置することは可能ですか? この質問への答えがあまり直接的でない場合、誰かが私が似たようなことをする方法を説明できますか? 前もって感謝します!

4

2 に答える 2

5

Apache Commons IO ライブラリには、バイト カウント入力/出力ストリーム フィルターを実装するクラスCountingInputStreamのペアがあります。CountingOutputStream

これらをストリーム チェーンに挿入すると、読み取りまたは書き込みのバイト数を追跡​​できます。(これらのフィルタは、物理的な入出力ストリームとオブジェクト ストリームの間のどこかに挿入する必要があります。)

FilterInputStreamおよびクラスをサブクラス化することで、同じことを自分で実装できFilterOutputStreamます。また、必要なものを正確に実装できる Swing クラスも呼び出されProgressMonitorInputStreamます

于 2011-03-20T02:30:59.360 に答える
0

通過するバイト数をカウントしながら、構築時に提供されるストリームとの間でパイプするだけの、インストルメント化された InputStream と OutputStream を作成することをお勧めします。

次に、上記のいずれかを挿入してストリーム チェーンを構築できます。インストルメント化された OutputStream とネットワークの間にバッファが多すぎないように注意してください。そうしないと、ネットワークではなくバッファに入るバイト数をカウントすることになります。

また、データを破棄するだけの別の出力ストリームを作成し、インストルメント化された出力ストリームを介してオブジェクトを 1 回書き込むことにより、送信される合計バイト数をカウントすることもできます。

于 2011-03-20T01:09:00.717 に答える