Я пытаюсь сканировать порты данного IP-адреса с диапазоном 20 портов. Я знаю, что порт 80 открыт, а все остальные закрыты. Мой код показывает, что все порты открыты.
Я пытаюсь использовать асинхронный TCPClient для сканирования портов.
Что здесь может быть не так? Я что-то пропустил?
private void btnStart_Click(object sender, EventArgs e)
{
for (int port = 80; port < 100; port++)
{
ScanPort(port);
}
}
private void ScanPort(int port)
{
using (TcpClient client = new TcpClient())
{
client.BeginConnect(IPAddress.Parse("74.125.226.84"), port, new AsyncCallback(CallBack), client);
}
}
private void CallBack(IAsyncResult result)
{
using (TcpClient client = (TcpClient)result.AsyncState)
{
try
{
this.Invoke((MethodInvoker)delegate
{
txtDisplay.Text += "open" + Environment.NewLine;
});
}
catch
{
this.Invoke((MethodInvoker)delegate
{
txtDisplay.Text += "closed" + Environment.NewLine;
});
}
}
}
Это то, что я сейчас использую как метод CallBack:
private void CallBack(IAsyncResult result)
{
using (TcpClient client = (TcpClient)result.AsyncState)
{
client.EndConnect(result);
if (client.Connected)
{
this.Invoke((MethodInvoker)delegate
{
txtDisplay.Text += "open" + Environment.NewLine;
});
}
else
{
this.Invoke((MethodInvoker)delegate
{
txtDisplay.Text += "closed" + Environment.NewLine;
});
}
}
}