Сканирование портов в несколько потоков с помощью 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();
}
}