ICMPによるPingクラス

UNIXやDOSコマンド等によく見られるpingを実行するプログラム例です。pingではICMP(Internet Control Message Protocol)というプロトコルを利用し、TCP/IPで接続されたコンピュータやネットワーク機器間で、互いの状態を確認するために用いられます。pingを実行するためのプログラミングでは、ネットワーク間のソケット作成やソケット間の通信を行うため、多少プログラムが複雑になってしまいますが、Windows APIに付属のライブラリ(libwsock32.a)やWindowsに付属のICMP.DLL等を利用すると比較的楽にpingを実現することが可能になります。

以下に例題として、winsock 内の関数とICMP.DLLを利用したping の実行例を取り上げています。双方ともlibwsock32.a へのリンクが必要になるため、コンパイル時には -lwsock32 を追加して下さい。

 ダウンロード

  • winsock によるPingクラス(cping.cpp)
  • ヘッダ(cping.h)
  • ICMP.DLL によるPingクラス(cpingdll.cpp)
  • ヘッダ(cpingdll.h)
  • コマンド実行例
    Gami[624]% cping.exe
    Pinging localhost [127.0.0.1] with 32 bytes of data:
    Reply[1] from: 127.0.0.1: bytes=32 time=0ms TTL=128
    Reply[2] from: 127.0.0.1: bytes=32 time=0ms TTL=128
    Reply[3] from: 127.0.0.1: bytes=32 time=0ms TTL=128
    Reply[4] from: 127.0.0.1: bytes=32 time=0ms TTL=128
    Reply[5] from: 127.0.0.1: bytes=32 time=0ms TTL=128
    
    inserted by FC2 system