UDPに関する統計情報を取得する
IPHLPAPIのGetUdpStatistics()を使うとUDPに関する統計情報を取得することができます。 ここでは、GetUdpStatistics()の使い方を説明します。
サンプルコード
GetUdpStatistics()を使ったサンプルコードを以下に示します。
#include <stdio.h>
#include <winsock2.h>
#include <iphlpapi.h>
int
main()
{
MIB_UDPSTATS udpstats;
if (GetUdpStatistics(&udpstats) == NOERROR) {
printf("dwInDatagrams: %ld\n", udpstats.dwInDatagrams);
printf("dwNoPorts: %ld\n", udpstats.dwNoPorts);
printf("dwInErrors: %ld\n", udpstats.dwInErrors);
printf("dwOutDatagrams: %ld\n", udpstats.dwOutDatagrams);
printf("dwNumAddrs: %ld\n", udpstats.dwNumAddrs);
} else {
printf("GetUdpStatistics failed : %d\n", GetLastError());
}
return 0;
}
サンプルコード実行例
上記コードをコンパイルして出来たものを実行すると、以下のようになります。
C:> a.exe
dwInDatagrams: 59859
dwNoPorts: 2736
dwInErrors: 0
dwOutDatagrams: 2001
dwNumAddrs: 9
GetUdpStatistics()が利用する構造体
GetUdpStatistics()が利用するMIB_UDPSTATS構造体は以下のように宣言されています。
typedef struct _MIB_UDPSTATS {
DWORD dwInDatagrams;
DWORD dwNoPorts;
DWORD dwInErrors;
DWORD dwOutDatagrams;
DWORD dwNumAddrs;
} MIB_UDPSTATS, *PMIB_UDPSTATS;
dwInDatagrams | 受信したデータグラム数です。 |
dwNoPorts | サービスを提供していないポート宛に送られてきて破棄されたデータグラム数です。 |
dwInErrors | 受信エラー数。dwNoPortsでカウントされたものは含まれません。 |
dwOutDatagrams | 送信したデータグラム数です。 |
dwNumAddrs | UDP listener tableのエントリ数です。 |