.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));
}
}

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


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

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

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