ネットワークパケット数・バイト数を取得するには?

解決


ひら  2004-06-28 13:49:14  No: 53874  IP: [192.*.*.*]

ネットワークパケット数とバイト数を取得して、MFCで作成したアプリケーションに表示したいのですが、どうやって取得したらいいのでしょうか。

[ネットワーク接続] → [ローカルエリア接続の状態]で表示される数や、コマンドプロンプトで「netstat -e」で表示されるものを使いたいのですが、
コード上でどのように取得したらいいか、わかりません。
ご教授、お願い致します。

編集 削除
瀬戸っぷ  2004-06-28 14:31:02  No: 53875  IP: [192.*.*.*]

> ネットワークパケット数とバイト数を取得して、MFCで作成したアプリケーションに表示したいのですが、
> どうやって取得したらいいのでしょうか。

http://homepage2.nifty.com/spw/tips/GetIfTable.html
このページ参考になりますか?
MIB_IFROW構造体のdwIn〜が受信、dwOut〜が送信の様です。

編集 削除
ひら  2004-06-28 15:36:41  No: 53876  IP: [192.*.*.*]

>瀬戸っぷさん
早い返事をありがとうございます。

こっちでもいろいろ調べてみてるのですが、MIB_IFROW構造体や、GetIpStatistics()の関数で送受信パケット数は取得できそうなのですが、
送受信バイト数をどのように取得していいのかわかりません。

NetStatisticsGet()という関数を使用して、STAT_WORKSTATION_0構造体で取得できそうな感じもするのですが、使用方法もわかりません。

わからないことだらけで、すみませんが、ご教授お願いします。

編集 削除
瀬戸っぷ  2004-06-28 17:08:48  No: 53877  IP: [192.*.*.*]

> こっちでもいろいろ調べてみてるのですが、MIB_IFROW構造体や、GetIpStatistics()の関数で
> 送受信パケット数は取得できそうなのですが、
> 送受信バイト数をどのように取得していいのかわかりません。

dwInOctetsとdwOutOctetsでは?

Google検索:「オクテットとは」
http://www.google.co.jp/search?hl=ja&ie=UTF-8&c2coff=1&q=%E3%82%AA%E3%82%AF%E3%83%86%E3%83%83%E3%83%88%E3%81%A8%E3%81%AF&lr=lang_ja

編集 削除
ひら  2004-06-28 18:51:26  No: 53878  IP: [192.*.*.*]

>dwInOctetsとdwOutOctetsでは?

ありがとうございます!
勉強になりました。

これでなんとか、送受信パケット数・バイト数が取得できて、表示できそうです。
いろいろ教えてくださってありがとうございました。

編集 削除
ひら  2004-07-06 16:36:24  No: 53879  IP: [192.*.*.*]

[解決]としたのですが、またわからないことが出てしまったので、
書き込ませていただきます。

瀬戸っぷさんが教えてくださったとおり、GetIfTable()を使用して、
パケット数が取得できるのですが、
Windowsの[ネットワーク接続]を右クリック→[プロパティ]で表示される
パケット数と少々ずれがある感じがします。
というのも、PCによってなのか、受信パケットがdwInUcastPktsとdwOutNUcastPktsが足したものを表示してるPCと、そうでないPCがあるように見られるのですが、誰か、ご存知のかたいませんか?
(ちなみに送信パケットはどのPCも足した数になってます)

勉強不足で的外れなことを聞いてるかもしれませんが、ご教授お願い致します。

編集 削除
瀬戸っぷ  2004-07-06 17:56:42  No: 53880  IP: [192.*.*.*]

> 瀬戸っぷさんが教えてくださったとおり、GetIfTable()を使用して、
> パケット数が取得できるのですが、
> Windowsの[ネットワーク接続]を右クリック→[プロパティ]で表示される
> パケット数と少々ずれがある感じがします。

両方が全く同じタイミングで実行されていない限り、
その間に受信したパケットがあれば数値は変わるかと……

DOS窓(コマンドプロンプト)で「netstat -e」を2回実行して数値は変わっていませんか?
送信の方が増えないのは実際に送信が行われていないからかと。
バックグラウンドで動作しているモノによっては送信しているかも知れませんが、
大抵、送信の方はユーザーのなんらかの操作によって行われますし。

受信の方は送りつけられたパケットを処理しているでしょうから時間が経てば増えていくかと。
(スイッチングHUBの場合は増加は緩やか…なのかな)

> 受信パケットがdwInUcastPktsとdwOutNUcastPktsが足したものを

dwInUcastPktsとdwInNUcastPktsですよね?
dwInNUcastPktskの方は他のマシンがブロードキャスト送信すると増えると思いますが。

編集 削除