在C#中使用ping是通过使用方法实现的,该方法Ping.Send(System.Net.IPAddress)
对提供的(有效)IP地址或URL运行ping请求并获得响应,该响应称为Internet控制消息协议(ICMP)数据包。该数据包包含一个20字节的标头,其中包含来自接收到ping请求的服务器的响应数据。.Net框架System.Net.NetworkInformation
名称空间包含一个名为的类PingReply
,该类具有旨在转换ICMP
响应并提供有关ping服务器的有用信息的属性,例如:
- IPStatus:获取发送Internet控制消息协议(ICMP)回显答复的主机的地址。
- IPAddress:获取发送Internet控制消息协议(ICMP)回显请求和接收相应的ICMP回显应答消息所花费的毫秒数。
- RoundtripTime (System.Int64):获取用于将答复传输到Internet控制消息协议(ICMP)回显请求的选项。
- PingOptions (System.Byte []):获取Internet控制消息协议(ICMP)回显答复消息中接收到的数据的缓冲区。
以下是一个简单的示例,WinForms
用于演示ping在c#中的工作方式。通过在中提供有效的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!!");
}
}
}
}