.NET 4.x Почему код генерирует одинаковые IP-адреса? - C#
Формулировка задачи:
Здравствуйте
Я сделал программу, которая создает рандомный IP, после чего проверяет, существует ли он. Если IP существует, то тогда в консоли высвечивается этот самый IP. Для большей эффективности я сделал программу многопоточной. Но по неизвестной мне причине несколько потоков (В основном все) рандомят одинаковый IP.
Код:
Почему это происходит? Из-за чего? Как это пофиксить? Очень благодарен тем, кто помог
Листинг программы
- List<Thread> _Threads = new List<Thread>();
- Console.Clear();
- Console.Write("Введите количество потоков : ");
- int _ThreadsCount = Convert.ToInt32(Console.ReadLine());
- Console.Clear();
- for (int i = 0; i < _ThreadsCount; i++)
- {
- Thread _Thread = new Thread(_Find);
- _Thread.Name = "ThreadN" + i;
- _Threads.Add(_Thread);
- Console.WriteLine("Создание потоков. Выполнено {0:P2}", Convert.ToDouble(i) / Convert.ToDouble(_ThreadsCount));
- }
- Console.Clear();
- Console.WriteLine("Поиск доменов...\n====================\n");
- for (int i = 0; i < _Threads.Count; i++)
- {
- _Threads[i].Start();
- }
- void _Find()
- {
- Random _Rnd = new Random();
- System.Net.NetworkInformation.Ping _Ping = new System.Net.NetworkInformation.Ping();
- string _IP = null;
- while (true)
- {
- try
- {
- _IP = String.Format("{0}.{1}.{2}.{3}", _Rnd.Next(0, 256), _Rnd.Next(0, 256), _Rnd.Next(0, 256), _Rnd.Next(0, 256));
- System.Net.NetworkInformation.PingReply _PingR = _Ping.Send(_IP, 250);
- if (_PingR.Status == System.Net.NetworkInformation.IPStatus.Success)
- {
- Console.WriteLine(_IP);
- }
- }
- catch
- {
- _IP = null;
- }
- }
- }
Извините, долго думал, как написать тему, а изменить название темы забыл..
Решение задачи: «.NET 4.x Почему код генерирует одинаковые IP-адреса?»
textual
Листинг программы
- class Program
- {
- private static Random rnd = new Random();
- static viod Main()
- {
- // не чего не изменилось, rnd использовать так же
- // _IP = String.Format("{0}.{1}.{2}.{3}", rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д