Я пытаюсь запустить небольшое приложение, которое сканирует порты и проверяет, открыты ли они, используя и тренируясь с помощью потоков. Окно консоли запросит номер и сканирует порты от 1 до X и отобразит каждый порт, открыты ли они или закрыты. Моя проблема заключается в том, что, проходя через каждый порт, он иногда останавливается преждевременно. Это не останавливается ни на одном номере, ни на его довольно случайном. Например, я укажу 200. Консоль будет прокручивать каждый порт, а затем останавливается на 110. В следующий раз, когда я запустил его, он остановится на 80.Сканирование портов с помощью threadpool
Код Оставшись из некоторых вещей, предположим, что все переменные объявлены там, где они должен. Первая часть находится в Main.
static void Main(string[] args)
{
string portNum;
int convertedNum;
Console.WriteLine("Scanning ports 1-X");
portNum = Console.ReadLine();
convertedNum = Convert.ToInt32(portNum);
try
{
for (int i = 1; i <= convertedNum; i++)
{
ThreadPool.QueueUserWorkItem(scanPort, i);
Thread.Sleep(100);
}
}
catch (Exception e)
{
Console.WriteLine("exception " + e);
}
}
static void scanPort(object o)
{
TcpClient scanner = new TcpClient();
try
{
scanner.Connect("127.0.0.1",(int)o);
Console.WriteLine("Port {0} open", o);
}
catch
{
Console.WriteLine("Port {0} closed",o);
}
}
}
показать нам код – unbeli
I второй @unbeli. –
@thenry Редактировать сообщение с кодом из вашего комментария .... Если у вас проблемы с форматированием ... спросите хорошо, и я уверен, что кто-то его очистит. – Rusty