Опросить несколько сетевых устройств на предмет их присутствия в сети - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую. Прошу помощи в следующей ситуации: Пытаюсь опросить несколько сетевых устройств на предмет их присутствия в сети, написал код вот его часть:
                
{
                    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();
                }
И тут вроде все работает как надо, но есть нюанс. На сколько я понял данная команда посылает один пакет и если приходит ответ значит оборудование в сети, но у меня есть оборудование которое на первый пакет может не ответить, а ответит только на второй и соответственно при работе данного кода приходит ответ что оборудование не в сети, хотя оно в сети и нормально пингуется если запустить на него обычную команду ping. Подскажите можно ли как то решить данную проблему? И второе, при работе данного кода, пока идет опрос всех устройств в списке, вся программа зависает и с ней ничего нельзя сделать, возможно ли это как то изменить? Заранее спасибо.

Решение задачи: «Опросить несколько сетевых устройств на предмет их присутствия в сети»

textual
Листинг программы
MultiplePing ping = new MultiplePing(4);
MultiplePingReply pingReply = ping.Send("google.com");
if (pingReply.AllFailed)
{
    Console.WriteLine("google.com недоступен");
}
else Console.WriteLine("google.com работает");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы