Как ускорить процесс сканирования TCP-портов?

Я пытаюсь асинхронно сканировать TCP-порты. Поскольку для открытия открытых портов требуется всего несколько сотых миллисекунд, они в порядке, но когда порты закрыты, мне приходится ждать ответа.

Я запускаю приложение и почти сразу вижу, что порт 80 открыт. Затем я должен подождать примерно полминуты, пока все остальные порты не будут просканированы.

РЕДАКТИРОВАТЬ. плюс я хотел бы показать ответ, как это происходит, без ожидания проверки других портов.

Как это сделать быстрее?

private void btnStart_Click(object sender, EventArgs e)
{
    for (int port = 79; port < 90; port++)
    {
        ScanPort(port);
    }
}

private void ScanPort(int port)
{
    TcpClient client = new TcpClient();
    client.BeginConnect(IPAddress.Parse("74.125.226.84"), port, new AsyncCallback(CallBack), client);
}

private void CallBack(IAsyncResult result)
{
    bool connected = false;

    using (TcpClient client = (TcpClient)result.AsyncState)
    {
        try
        {
            client.EndConnect(result);
            connected = client.Connected;
        }
        catch (SocketException)
        {
        }
    }

    if (connected)
    {
        this.Invoke((MethodInvoker)delegate
        {
            txtDisplay.Text += "open2" + Environment.NewLine;
        });
    }
    else
    {
        this.Invoke((MethodInvoker)delegate
        {
            txtDisplay.Text += "closed2" + Environment.NewLine;
        });
    } 
}
6
задан NewHelpNeeder 26 January 2012 в 20:18
поделиться