using System.Net; using System.Net.Sockets; namespace IP_port_checker.PortScanner { public class TCPChecker { private static async Task 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>(); 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