Опросить несколько сетевых устройств на предмет их присутствия в сети - C#
Формулировка задачи:
Приветствую.
Прошу помощи в следующей ситуации:
Пытаюсь опросить несколько сетевых устройств на предмет их присутствия в сети, написал код вот его часть:
И тут вроде все работает как надо, но есть нюанс. На сколько я понял данная команда посылает один пакет и если приходит ответ значит оборудование в сети, но у меня есть оборудование которое на первый пакет может не ответить, а ответит только на второй и соответственно при работе данного кода приходит ответ что оборудование не в сети, хотя оно в сети и нормально пингуется если запустить на него обычную команду ping. Подскажите можно ли как то решить данную проблему? И второе, при работе данного кода, пока идет опрос всех устройств в списке, вся программа зависает и с ней ничего нельзя сделать, возможно ли это как то изменить?
Заранее спасибо.
{
Ping pingSender = new Ping();
PingReply reply;
int timeout = 2500;
chbWiFi1.BackColor = Color.Silver;
chbWiFi2.BackColor = Color.Silver;
chbWiFi3.BackColor = Color.Silver;
chbWiFi4.BackColor = Color.Silver;
System.Windows.Forms.Application.DoEvents();
calcip(59);
reply = pingSender.Send(tbTMP.Text, timeout);
if (reply.Status == IPStatus.Success)
{
chbWiFi1.BackColor = Color.LightGreen;
}
else
{
chbWiFi1.BackColor = Color.LightCoral;
}
System.Windows.Forms.Application.DoEvents();
calcip(60);
reply = pingSender.Send(tbTMP.Text, timeout);
if (reply.Status == IPStatus.Success)
{
chbWiFi2.BackColor = Color.LightGreen;
}
else
{
chbWiFi2.BackColor = Color.LightCoral;
}
System.Windows.Forms.Application.DoEvents();
calcip(61);
reply = pingSender.Send(tbTMP.Text, timeout);
if (reply.Status == IPStatus.Success)
{
chbWiFi3.BackColor = Color.LightGreen;
}
else
{
chbWiFi3.BackColor = Color.LightCoral;
}
System.Windows.Forms.Application.DoEvents();
calcip(62);
reply = pingSender.Send(tbTMP.Text, timeout);
if (reply.Status == IPStatus.Success)
{
chbWiFi4.BackColor = Color.LightGreen;
}
else
{
chbWiFi4.BackColor = Color.LightCoral;
}
System.Windows.Forms.Application.DoEvents();
}Решение задачи: «Опросить несколько сетевых устройств на предмет их присутствия в сети»
textual
Листинг программы
MultiplePing ping = new MultiplePing(4);
MultiplePingReply pingReply = ping.Send("google.com");
if (pingReply.AllFailed)
{
Console.WriteLine("google.com недоступен");
}
else Console.WriteLine("google.com работает");