代码如下:
private void button1_Click(object sender, EventArgs e)
{
var sr = new StreamReader("ips.txt");// 一个一个地读取ip地址列表
while (true)
{
string str = sr.ReadLine();
if (String.IsNullOrEmpty(str))
break;
PingFunc(str);
}
sr.Close();
}
private void PingFunc(string str)
{
var testping = new System.Net.NetworkInformation.Ping();
testping.PingCompleted += PingCompletedCallBack;
testping.SendAsync(ip, null);// 异步执行ping命令
}
// ping完成后的处理事件
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
if (e.Cancelled)
{
listBox1.Items.Add("Ping Canncel");
return;
}
if (e.Error != null)
{
listBox1.Items.Add(e.Error.Message);
return;
} var reply = e.Reply;
// 下边这个reply address不一定是你ping的那个ip
var sbuilder = (string.Format("Reply Address: {0} ", reply.Address));
sbuilder += (string.Format("Reply Status: {0} ", reply.Status));
listBox1.Items.Add(sbuilder);
}
由于异步执行返回的结果不一定是按照ip列表中的顺序来的,返回超时的ping总是比不超时的来的晚,
所以不知道哪个返回结果是属于ping的哪个ip,
对应不起来了.
private void button1_Click(object sender, EventArgs e)
{
var sr = new StreamReader("ips.txt");// 一个一个地读取ip地址列表
while (true)
{
string str = sr.ReadLine();
if (String.IsNullOrEmpty(str))
break;
PingFunc(str);
}
sr.Close();
}
private void PingFunc(string str)
{
var testping = new System.Net.NetworkInformation.Ping();
testping.PingCompleted += PingCompletedCallBack;
testping.SendAsync(ip, null);// 异步执行ping命令
}
// ping完成后的处理事件
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
if (e.Cancelled)
{
listBox1.Items.Add("Ping Canncel");
return;
}
if (e.Error != null)
{
listBox1.Items.Add(e.Error.Message);
return;
} var reply = e.Reply;
// 下边这个reply address不一定是你ping的那个ip
var sbuilder = (string.Format("Reply Address: {0} ", reply.Address));
sbuilder += (string.Format("Reply Status: {0} ", reply.Status));
listBox1.Items.Add(sbuilder);
}
由于异步执行返回的结果不一定是按照ip列表中的顺序来的,返回超时的ping总是比不超时的来的晚,
所以不知道哪个返回结果是属于ping的哪个ip,
对应不起来了.
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
var ip = e.UserState as IPAddress;