diff --git a/SubnetScanner/IsHostAlive.cs b/SubnetScanner/IsHostAlive.cs new file mode 100644 index 0000000..333799d --- /dev/null +++ b/SubnetScanner/IsHostAlive.cs @@ -0,0 +1,43 @@ +using System.Net.NetworkInformation; + +namespace IP_port_checker.SubnetScanner +{ + public class IsHostAlive + { + private static bool HostAliveCheck(string ip) + { + try + { + using (Ping ping = new Ping()) + { + PingReply pingReply = ping.Send(ip, 1000); + return pingReply.Status == IPStatus.Success; + } + } + catch + { + return false; + } + } + public static void ParralelScan(string network) + { + var tasks = new List(); + int alive = 0; + + for (int i = 0; i < 254; i++) + { + string ip = $"{network}.{i}"; + tasks.Add(Task.Run(() => + { + if (HostAliveCheck(ip)) + { + Console.WriteLine($"Хост {ip} - в сети"); + alive++; + } + })); + } + Task.WaitAll(tasks.ToArray()); + Console.WriteLine($"Устройств в сети: {alive}"); + } + } +}