C# pingでLANをチェックする

   

LANに接続して通信を行うプログラムなどで、実際の通信を開始する前に「通信相手が存在するか」を確認する必要があります。
自分ひとりで使うだけであれば、コマンドプロンプトなどでpingコマンドを打てば事足りますが、いろいろな環境下で使用されるプログラムとなるとそうもいきません。

 

.NET Frameworkでping

.NET Framework 2.0からは、System.Net.NetworkInformation.Pingクラスがあり、このクラスを使ってプログラムからネットワーク上の特定のコンピュータへICMP(Internet Control Message Protocol)エコー・メッセージ(いわゆるpingパケット)を送信して、その応答で相手のコンピュータの存在をチェックできます。

pingでの確認には同期通信と非同期通信による2つの方法がありますが、今回は同期通信だけ紹介します。

 

Pingクラスを使う

Pingクラスのインスタンスを作成し、Sendメソッドを呼び出すだけです。
ただ、pingを送って応答を判定するだけのサンプルプログラムです。

 

このままでも普通にpingを送信して、応答を受信して判定もできます。

 

ちょっと応用

このPing.Send()にはオーバーロードがいくつかあり、引数に送信先と「タイムアウト時間の指定」ができます。
さらに、同一LANのIPアドレスすべてに1度だけ送って疎通確認を行います。

サンプルプログラムです。

 

これだけでも、同一ネットワーク内の通信先のチェックができます。

 

 

 

 - 未分類