トラフィック情報を格納するための構造体を以下に示します。
獲得情報
//インタフェース別トラフィック情報格納構造体 typedef struct _MP_TRFIF_INF{ unsigned long dwIfIndex; // インタフェース番号 double dIfInOctets; // 受信バイト数 double dIfOutOctets; // 送信バイト数 double dIfLinePkts; // 回線使用率 double dIfInPkts; // 受信パケット数 double dIfOutPkts; // 送信パケット数 double dIfDiscardPkts; // 破棄パケット率 double dIfErrorPkts; // エラーパケット率 double dIfSegOctets; // セグメントバイト数 double dIfSegPkts; // セグメントパケット数 double dIfSegBroadcastPkts; // セグメントブロード // キャストパケット数 double dIfSegMulticastPkts; // セグメントマルチ // キャストパケット数 double dIfSegPercentOfUsage; // セグメント使用率 double dIfSegPercentOfCollision; // セグメントコリジョン // 発生率 } MP_TRFIF_INF, * LPMP_TRFIF_INF;
使用例
トラフィック情報のアクセスAPI関数の使用例を以下に示します。
//--------------------------------------------------------------------- // インタフェース別トラフィック情報の獲得 //--------------------------------------------------------------------- //--------------------------------------------------------------------- // パラメタ // argv[0] : コマンド名 // argv[1] : ノード名 // argv[2] : インタフェース番号 //-------------------------------------------------------------------- #include <stdio.h> #include "F3crTInf.h" void main(int argc, char *argv[]) { int Bresult; MP_TRFIF_INF trfinfo; //--------------------------------------------------------------------- //指定パラメタの表示 //--------------------------------------------------------------------- printf("--- Traffic information ---\n"); printf("Node name = %s\n", argv[1]); printf("Interface index = %s\n", argv[2]); printf("\n"); //--------------------------------------------------------------------- //トラフィック情報の獲得 //--------------------------------------------------------------------- memset(&trfinfo, 0, sizeof(trfinfo)); Bresult = Mp_GetNodeIFTraffic(argv[1], atoi(argv[2]), &trfinfo); //--------------------------------------------------------------------- // トラフィック情報の表示 //--------------------------------------------------------------------- if (Bresult == -1) { printf("Error! Reason code = %d\n", errno); } else { //トラフィック情報が有効かどうかの判定を行います if (trfinfo.dIfInOctets != MP_TRF_INF_ING) printf("dIfInOctets = %.0fB\n", trfinfo.dIfInOctets); if (trfinfo.dIfOutOctets != MP_TRF_INF_ING) printf("dIfOutOctets = %.0fB\n", trfinfo.dIfOutOctets); if (trfinfo.dIfLinePkts != MP_TRF_INF_ING) printf("dIfLinePkts = %.2f%%\n", trfinfo. dIfLinePkts); if (trfinfo.dIfInPkts != MP_TRF_INF_ING) printf("dIfInPkts = %.0fP\n", trfinfo. dIfInPkts); if (trfinfo.dIfOutPkts != MP_TRF_INF_ING) printf("dIfOutPkts = %.0fP\n", trfinfo. dIfOutPkts); if (trfinfo.dIfDiscardPkts != MP_TRF_INF_ING) printf("dIfDiscardPkts = %.2f%%\n", trfinfo. dIfDiscardPkts); if (trfinfo.dIfErrorPkts != MP_TRF_INF_ING) printf("dIfErrorPkts = %.2f%%\n", trfinfo. dIfErrorPkts); if (trfinfo.dIfSegOctets != MP_TRF_INF_ING) printf("dIfSegOctets = %.0fB\n", trfinfo. dIfSegOctets); if (trfinfo.dIfSegPkts != MP_TRF_INF_ING) printf("dIfSegPkts = %.0fP\n", trfinfo. dIfSegPkts); if (trfinfo.dIfSegBroadcastPkts != MP_TRF_INF_ING) printf("dIfSegBroadcastPkts = %.0fP\n", trfinfo. dIfSegBroadcastPkts); if (trfinfo.dIfSegMulticastPkts != MP_TRF_INF_ING) printf("dIfSegMulticastPkts = %.0fP\n", trfinfo. dIfSegMulticastPkts); if (trfinfo.dIfSegPercentOfUsage != MP_TRF_INF_ING) printf("dIfSegPercentOfUsage = %.2f%%\n", trfinfo. dIfSegPercentOfUsage); if (trfinfo.dIfSegPercentOfCollision != MP_TRF_INF_ING) printf("dIfSegPercentOfCollision = %.2f%%\n", trfinfo. dIfSegPercentOfCollision); } return; }