1

実行中のプログラム/プロセスごとに、PC で送受信されたデータの量 (B/kB/MB など) をカウントする必要があります。

「カウントを開始」をクリックすると、その瞬間から「停止」を選択するまで、ブラウザ、FTP クライアント、システムの実現などによって送受信されたすべての合計を取得するとします。

簡単にするために、TCP経由で転送されたデータのみをカウントしたいと思います-それが重要な場合。

今のところ、PC の NIC のコンボ リストを取得しました (以下のリンクのコメントに基づく)。ここに記載されているコードを変更しようとしましたが、dataSent/dataReceived でどこからともなく奇妙な値を取得して失敗しました。

質問442409の回答も読みましたが、同じプログラムによって送受信されたデータに関するものであり、要件に適合していないことがわかります。

4

2 に答える 2

2

Perfmon には、実行したいこのタイプのカウンターが必要なので、まずそこを調べてください。

于 2010-01-21T15:27:37.863 に答える
0

さて、私は解決策を見つけたと思いますが、誰かがもっと良いものを提案するかもしれません...

タイマーを作成し(10ms間隔でテスト)、「Bytes Received / sec」PerformanceCounter値を取得し、それをグローバルな「一時」変数に追加し、合計カウンターをインクリメントします(ラグがある場合)。次に、1秒間隔で2番目のタイマーを作成しました。これは、値の合計(一時的な合計から)を取得し、それをカウンターで除算して、全体の量(これもグローバル)に追加します。次に、一時的な合計とカウンターをリセットします。

「受信バイト数/秒」PerformanceCounterの変数が1秒間にどのように変化するかわからないため、これが正しい方法かどうかはわかりません。たぶん、ある種のヒストリグラフを作成して、平均値を取得する必要がありますか?

今のところ、8.6MBのファイルをダウンロードすると全体で9.2MBの量が得られました-他のプロセスが20秒未満でその量のネットアクティビティを生成する可能性はありますか?

于 2010-01-26T12:58:18.943 に答える