Добавить PortScanner/TCPChecker.cs
Я восхищаюсь Kolo. Вот с таких людей надо брать пример
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace IP_port_checker.PortScanner
|
||||
{
|
||||
public class TCPChecker
|
||||
{
|
||||
private static async Task<bool> IsPortOpen(IPAddress ip, int port)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var tcp = new TcpClient();
|
||||
var task = tcp.ConnectAsync(ip, port);
|
||||
var timeout = Task.Delay(500);
|
||||
if (await Task.WhenAny(task, timeout) == task)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task ScanPort(IPAddress ip, int stport, int endport)
|
||||
{
|
||||
var tasks = new List<Task<bool>>();
|
||||
|
||||
for (int port = stport; port <= endport; port++)
|
||||
{
|
||||
tasks.Add(IsPortOpen(ip, port));
|
||||
}
|
||||
|
||||
bool[] res = await Task.WhenAll(tasks);
|
||||
|
||||
for (int i = 0; i < res.Length; i++)
|
||||
if (res[i])
|
||||
Console.WriteLine($"[{DateTime.Now:HH:mm.ss.ffff}] Порт {stport + i} открыт");
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
//127.0.0.1
|
||||
Reference in New Issue
Block a user