Сканирование портов в несколько потоков с помощью ThreadPool - C#

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

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

Мне необходимо создать приложение в котором вводится определенное количество потоков которые сканируют порты. Как создать?
ThreadPool.SetMaxThreads(Convert.ToInt32(countPool.Text), Convert.ToInt32(countPool.Text)-1);
            ThreadPool.GetMaxThreads(out nWorkThread, out nCompletionThread);
            listBox1.Items.Add("MAX: " + nWorkThread);
            listBox1.Items.Add("Ввод-вывод: " + nCompletionThread);
 
            for (int i = 0; i < Convert.ToInt32(countPool.Text); i++)
                ThreadPool.QueueUserWorkItem(ForThread);
            Thread.Sleep(3000);
 
public void ForThread(object state)
        {
            IPAddress ipAddress = IPAddress.Parse(ip.Text);
            TcpClient TcpScan = new TcpClient();
            SetListItemAdd listItemBox = new SetListItemAdd(this.LoadItemListCallBack);
            for (int port = startPort; port < EndPort; port++)
            {
                ///здесь подключение к серверу
            }
        }
При таком коде, каждый поток будет сканировать все порты. А нужно что-бы потоки проверили все порты...

Решение задачи: «Сканирование портов в несколько потоков с помощью ThreadPool»

textual
Листинг программы
public void ForThread(object state)
        {
            IPAddress ipAddress = IPAddress.Parse(ip.Text);
            TcpClient TcpScan = new TcpClient();
            SetListItemAdd listItemBox = new SetListItemAdd(this.LoadItemListCallBack);
            int? port=GetPort();
            while (port!=null){
              ///здесь подключение к серверу
              port=GetPort();
            }
        }

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы