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のエントリ数です。

YouTubeチャンネルやってます!