C#でpingを使用Ping.Send(System.Net.IPAddress)
するには、指定された(有効な)IPアドレスまたはURLに対してping要求を実行し、インターネット制御メッセージプロトコル(ICMP)パケットと呼ばれる応答を取得するメソッドを使用します。パケットには、ping要求を受信したサーバーからの応答データを含む20バイトのヘッダーが含まれています。.Net FrameworkSystem.Net.NetworkInformation
名前空間にはPingReply
、ICMP
応答を変換し、次のようなpingされたサーバーに関する有用な情報を提供するように設計されたプロパティを持つというクラスが含まれています。
- IPStatus:インターネット制御メッセージプロトコル(ICMP)エコー応答を送信するホストのアドレスを取得します。
- IPAddress:インターネット制御メッセージプロトコル(ICMP)エコー要求を送信し、対応するICMPエコー応答メッセージを受信するのにかかるミリ秒数を取得します。
- RoundtripTime (System.Int64):インターネット制御メッセージプロトコル(ICMP)エコー要求への応答の送信に使用されるオプションを取得します。
- PingOptions (System.Byte []):インターネット制御メッセージプロトコル(ICMP)エコー応答メッセージで受信したデータのバッファーを取得します。
以下は、WinForms
C#でpingがどのように機能するかを示すために使用する簡単な例です。に有効なIPアドレスを指定してtextBox1
をクリックするbutton1
と、Ping
クラスのインスタンス、ローカル変数PingReply
、およびIPアドレスまたはURLアドレスを格納するための文字列が作成されます。PingReply
pingSend
メソッドに割り当て、応答のステータスとプロパティのIPAddress.Success
ステータスを比較して、リクエストが成功したかどうかを調べます。最後に、PingReply
上記のユーザーに表示する必要のある情報から抽出します。
using System;
using System.Net.NetworkInformation;
using System.Windows.Forms;
namespace PingTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Ping p = new Ping();
PingReply r;
string s;
s = textBox1.Text;
r = p.Send(s);
if (r.Status == IPStatus.Success)
{
lblResult.Text = "Ping to " + s.ToString() + "[" + r.Address.ToString() + "]" + " Successful"
+ " Response delay = " + r.RoundtripTime.ToString() + " ms" + "\n";
}
}
private void textBox1_Validated(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "")
{
MessageBox.Show("Please use valid IP or web address!!");
}
}
}
}