0

vb.net を使用して Windows 用の帯域幅メーターを作成したいのですが、データの入出力量を監視するための .net フレームワークが見つかりません。無料でなかなかいいものが見つからないので作ってみたいと思いますし、欲しい人もいると思います。

これを監視するための .net フレームワークに何もない場合、P/Invoke 呼び出しを実行できますか? もしそうなら、それらは何ですか?

このプロジェクトは実現可能ですか?可能であれば、すべてのプログラムと接続から、出入りするデータの正確な量を試して測定したいと思います。

お手伝いありがとう!

編集:明確にするために、単純なものMy.Computer.Network.IOやそのようなものがあるとは思えませんが、これを複雑にしすぎたくはありません。

もう一度編集: おそらくこれは複雑すぎるでしょう。ポート 80 で http アクティビティを監視したいだけの場合、実際にデータを妨害することなくこれを行うにはどうすればよいでしょうか?

4

6 に答える 6

1

ドライバーレベルに移動してイーサネットデバイスを監視し、出入りするバイトをカウントアップする必要があります。

それはP/Invokeを含みます私はかなり確信しています。そんなに簡単だとは思わないでください...

于 2009-12-16T01:04:50.547 に答える
1

いくつかの可能性:

  • WinPCap-ただし、アプリケーションは提供されません
  • LSP-Winsockを使用するすべてのプロセスにDLLとしてロードされます。アプリケーションごとのトラフィックを監視したいすべてのものを提供しますが、書くのは簡単ではありません。
  • WMI-ネットワークインターフェイスごとの合計:http://msdn.microsoft.com/en-us/library/aa394293 (VS.85).aspx
于 2009-12-16T01:11:08.023 に答える
1

あなたはこれを簡単にだますことができます:

  1. cmd.exeを使用してプロセスを作成します
  2. コマンド`netstat-e 10'を呼び出します(10秒間)
  3. 出力を入力ストリームとしてアプリケーションにパイプバックします
  4. 入力ストリームを解析します
  5. ユーザーがプログラムを終了することを決定した場合は、ctrl-cブレークシーケンスをプロセスに送信します。

どう思いますか?

これがお役に立てば幸いです、よろしく、トム。

于 2009-12-16T01:15:02.183 に答える
1

ここにいくつかの可能性があります:

于 2009-12-16T01:16:10.170 に答える
1

最適な方法は、パフォーマンス カウンターまたは WMI を使用して、快適な頻度でサンプリングを行うことです。ネットワーク カード プロパティのバイト カウントに似たものを取得しようとしている場合、これらのカウンターはパフォーマンス カウンター セットに含まれています。

すべてのデバイス (USB など) も測定しようとしている場合は、データ転送イベントをインターセプトするために独自のカスタマー ドライバーを作成する必要があります。

于 2009-12-16T01:20:53.043 に答える
1

ネットワーク インターフェイス カードのスループットに関する基本的な数値を示すパフォーマンス カウンターがいくつかあります。Perfmon.exe でそれらを調べることから始めます。カテゴリ、名前、およびインスタンス名が表示されます。これらの同じ数値は、.NET PerformanceCounter クラスで使用できます。

それらを使用して帯域幅を測定するのはかなりトリッキーです.IPメッセージをマシンにパイプする数十台のルーターと組み合わせて、話しているサーバーの帯域幅を測定する可能性が高くなります.

于 2009-12-16T01:21:41.393 に答える