44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
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<Task>();
|
|
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}");
|
|
}
|
|
}
|
|
}
|