Cómo hacer un escáner de puertos con C#
Idea
La idea es relativamente simple: este es un programa de un solo subproceso, seguido de una implementación de múltiples subprocesos. Este programa de un solo subproceso construirá el objeto TcpClient y lo llamará en función. en los parámetros proporcionados. Su función de conexión prueba si la conexión es accesible para determinar si el puerto está abierto.
Implementación de un solo subproceso
Interfaz
Utilice C# para. escriba la interfaz, el efecto es el siguiente
Código comercial
Código para implementar el escaneo:
private void NormalScan (estado Int32) {
Puerto Int32 = estado;
String msg = "";
TcpClient tcp = new TcpClient();
probar
{
tcp.Connect(IPAddress .Parse(textBox1.Text), puerto);
portSum++
msg = port.ToString() + "Puerto está abierto";
listBox1. Items.Add(msg);
tcp.Close();
}
catch {
msg = port.ToString( ) + "El puerto está abierto";
listBox1.Items.Add(msg);
tcp.Close()) + "El puerto no está abierto";
listBox1.Items.Add(msg);
}
}12345678910111213141516171234567891011121314151617
Procesamiento de botones código
botón vacío privado1_Click(remitente del objeto, EventArgs e)
{
int connState = 0;
String scanHost = textBox1. Texto;
prueba
{
IPAddress ipaddr = (IPAddress)Dns.Resolve(scanHost).AddressList.GetValue(0);
textBox1. Texto = ipaddr.ToString();
}
captura
captura {
textBox1.Focus();
MessageBox.Show("Ingrese la dirección de host correcta, que no se puede resolver mediante DNS", "Consejo del sistema");
return;
}
Int32 threadNum = (Int32)startPort.Value;
Int32 end = (Int32)endPort.Value;
for (; threadNum <= end; threadNum++) { p>
NormalScan (threadNum);
listBox1.Refresh();
}
}1234567891011121314151617181920212212345678910111213141516171819202122