我想運行一個小應用程序,掃描端口並檢查它們是否打開使用並使用線程池實踐。控制檯窗口會詢問一個數字並掃描從1到X的端口,並顯示每個端口是否打開或關閉。我的問題是,當它通過每個端口時,它有時會過早停止。它不止於一個數字,它非常隨意。例如,它指定200.控制檯將滾動通過每個端口,然後停在110.下一次我運行它,它停在80.使用線程池的端口掃描
代碼 遺漏了一些事情,假設所有變量聲明在哪裏他們應該。第一部分在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 2010-06-11 15:26:48
第二@unbeli。 – 2010-06-11 17:22:50
@thenry用你評論中的代碼編輯你的文章....如果有格式化問題...問好,我敢肯定有人會爲你清理它。 – Rusty 2010-06-11 17:41:45