0
我試圖創造出單獨掃描指定的IP地址的端口,像這樣的應用程序線程:我需要一些指針有關我的程序
private void ScanPort(IPAddress address, int port)
{
using (TcpClient client = new TcpClient())
{
IAsyncResult result = client.BeginConnect(address, port, null, null);
if (result.AsyncWaitHandle.WaitOne(1000, false)) txtDisplay.AppendText("Port: " + nudFrom.Value.ToString() + " is open." + Environment.NewLine);
else txtDisplay.AppendText("Port: " + nudFrom.Value.ToString() + " is closed." + Environment.NewLine);
}
}
現在,有了這個代碼掃描IP需要一定的時間,尤其是如果我有100多個端口掃描。
我雖然研究線程。問題是,我對如何使用線程有點空白,但我確實從MSDN或其他文章中看過一些文章,這些文章展示瞭如何進行基本線程化。
現在,我不知道如何在我的程序中實現線程。我可以創建一個指向我的ScanPort方法的事件處理程序,但是如果我初始化一個或多個線程,它將從端口的開始處開始ping。儘管我有另一個是我應該開始多少個線程。
你明白了嗎?我需要一些關於如何在我的程序中實現線程的基本概念。
我建議你*不*爲此需要線程,您只需使用異步I/O。單線程非常快速地掃描100個端口應該絕對沒有問題。 –
@Greg Hewgill,檢查端口是否打開很快,但關閉時,我必須等待超時才能檢查另一個端口。另外,我不使用異步掃描嗎? – HelpNeeder
是的,您正在使用異步I/O,但是您正在以同步方式使用它。你正在開始一個連接,然後等待發生。我的建議是,你可以同時調用'BeginConnect'來連接多個*不同的*連接。 –