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