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

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

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

Приветствую. Прошу помощи в следующей ситуации: Пытаюсь опросить несколько сетевых устройств на предмет их присутствия в сети, написал код вот его часть:
Листинг программы
  1. {
  2. Ping pingSender = new Ping();
  3. PingReply reply;
  4. int timeout = 2500;
  5. chbWiFi1.BackColor = Color.Silver;
  6. chbWiFi2.BackColor = Color.Silver;
  7. chbWiFi3.BackColor = Color.Silver;
  8. chbWiFi4.BackColor = Color.Silver;
  9. System.Windows.Forms.Application.DoEvents();
  10. calcip(59);
  11. reply = pingSender.Send(tbTMP.Text, timeout);
  12. if (reply.Status == IPStatus.Success)
  13. {
  14. chbWiFi1.BackColor = Color.LightGreen;
  15. }
  16. else
  17. {
  18. chbWiFi1.BackColor = Color.LightCoral;
  19. }
  20. System.Windows.Forms.Application.DoEvents();
  21. calcip(60);
  22. reply = pingSender.Send(tbTMP.Text, timeout);
  23. if (reply.Status == IPStatus.Success)
  24. {
  25. chbWiFi2.BackColor = Color.LightGreen;
  26. }
  27. else
  28. {
  29. chbWiFi2.BackColor = Color.LightCoral;
  30. }
  31. System.Windows.Forms.Application.DoEvents();
  32. calcip(61);
  33. reply = pingSender.Send(tbTMP.Text, timeout);
  34. if (reply.Status == IPStatus.Success)
  35. {
  36. chbWiFi3.BackColor = Color.LightGreen;
  37. }
  38. else
  39. {
  40. chbWiFi3.BackColor = Color.LightCoral;
  41. }
  42. System.Windows.Forms.Application.DoEvents();
  43. calcip(62);
  44. reply = pingSender.Send(tbTMP.Text, timeout);
  45. if (reply.Status == IPStatus.Success)
  46. {
  47. chbWiFi4.BackColor = Color.LightGreen;
  48. }
  49. else
  50. {
  51. chbWiFi4.BackColor = Color.LightCoral;
  52. }
  53. System.Windows.Forms.Application.DoEvents();
  54. }
И тут вроде все работает как надо, но есть нюанс. На сколько я понял данная команда посылает один пакет и если приходит ответ значит оборудование в сети, но у меня есть оборудование которое на первый пакет может не ответить, а ответит только на второй и соответственно при работе данного кода приходит ответ что оборудование не в сети, хотя оно в сети и нормально пингуется если запустить на него обычную команду ping. Подскажите можно ли как то решить данную проблему? И второе, при работе данного кода, пока идет опрос всех устройств в списке, вся программа зависает и с ней ничего нельзя сделать, возможно ли это как то изменить? Заранее спасибо.

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

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

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


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

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

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы