.NET 4.x Почему код генерирует одинаковые IP-адреса? - C#

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

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

Здравствуйте Я сделал программу, которая создает рандомный IP, после чего проверяет, существует ли он. Если IP существует, то тогда в консоли высвечивается этот самый IP. Для большей эффективности я сделал программу многопоточной. Но по неизвестной мне причине несколько потоков (В основном все) рандомят одинаковый IP. Код:
Листинг программы
  1. List<Thread> _Threads = new List<Thread>();
  2. Console.Clear();
  3. Console.Write("Введите количество потоков : ");
  4. int _ThreadsCount = Convert.ToInt32(Console.ReadLine());
  5. Console.Clear();
  6. for (int i = 0; i < _ThreadsCount; i++)
  7. {
  8. Thread _Thread = new Thread(_Find);
  9. _Thread.Name = "ThreadN" + i;
  10. _Threads.Add(_Thread);
  11. Console.WriteLine("Создание потоков. Выполнено {0:P2}", Convert.ToDouble(i) / Convert.ToDouble(_ThreadsCount));
  12. }
  13. Console.Clear();
  14. Console.WriteLine("Поиск доменов...\n====================\n");
  15. for (int i = 0; i < _Threads.Count; i++)
  16. {
  17. _Threads[i].Start();
  18. }
  19. void _Find()
  20. {
  21. Random _Rnd = new Random();
  22. System.Net.NetworkInformation.Ping _Ping = new System.Net.NetworkInformation.Ping();
  23. string _IP = null;
  24. while (true)
  25. {
  26. try
  27. {
  28. _IP = String.Format("{0}.{1}.{2}.{3}", _Rnd.Next(0, 256), _Rnd.Next(0, 256), _Rnd.Next(0, 256), _Rnd.Next(0, 256));
  29. System.Net.NetworkInformation.PingReply _PingR = _Ping.Send(_IP, 250);
  30. if (_PingR.Status == System.Net.NetworkInformation.IPStatus.Success)
  31. {
  32. Console.WriteLine(_IP);
  33. }
  34. }
  35. catch
  36. {
  37. _IP = null;
  38. }
  39. }
  40. }
Почему это происходит? Из-за чего? Как это пофиксить? Очень благодарен тем, кто помог
Извините, долго думал, как написать тему, а изменить название темы забыл..

Решение задачи: «.NET 4.x Почему код генерирует одинаковые IP-адреса?»

textual
Листинг программы
  1. class Program
  2. {
  3. private static Random rnd = new Random();
  4.  
  5. static viod Main()
  6. {
  7.   // не чего не изменилось, rnd использовать так же
  8.   // _IP = String.Format("{0}.{1}.{2}.{3}", rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
  9. }
  10. }

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


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

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

10   голосов , оценка 4.1 из 5

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

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

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