RTTとHop Countを取得する
IPHLPAPIのGetRTTAndHopCount()を使うとRTTとHop Countを簡単に取得することができます。 ここでは、GetRTTAndHopCount()の使い方を説明します。
サンプルコード
GetRTTAndHopCount()を使ったサンプルコードを以下に示します。 使い方は非常に簡単です。
#include <stdio.h>
#include <winsock2.h>
#include <iphlpapi.h>
int
main()
{
IPAddr ipaddr = inet_addr("127.0.0.1");
ULONG hopCount = 0;
ULONG maxHops = 64;
ULONG rtt = 0;
if (GetRTTAndHopCount(ipaddr, &hopCount, maxHops, &rtt) == TRUE) {
printf("Hops: %ld\n", hopCount);
printf("RTT: %ld msec\n", rtt);
} else {
printf("GetRTTAndHopCount failed : %d\n", GetLastError());
}
return 0;
}
サンプルコード実行例
上記コードをコンパイルして出来たものを実行すると、以下のようになります。 サンプルコード内の宛先が127.0.0.1(localhost)なので、Hopsは1になっています。 RTTが0なのも、自分の中で処理しているだけで十分時間が短いからであると思います。 違った宛先で行えば、RTTの値ももう少し大きくなります。
C:> a.exe
Hops: 1
RTT: 0