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