Опросить несколько сетевых устройств на предмет их присутствия в сети - 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 работает");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д