C#. Сканируем сеть ping-я хосты
Запись делаю что бы не забыть. Сначала думал для сканирования хостов решил использовать API nmap. Но при использовании этого метода возникли следующие проблемы:
- Необходимо установить nmap перед тем как использовать в коде;
- Необходимо установить Npcap (вроде как не совместим с Wireshark);
- Для того запуска требует права админа, что не есть хорошо (ну это в рамках моего проекта).
На офиициальном сайте Мелкомягких есть пример использования. Прям от туда и взял, чуть подправив под свои нужды. На вход подаем адрес
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
namespace PingConsole
{
internal class Program
{
static void Main(string[] args)
{
string sb;
sb = "172.26.0.";
for(int i = 1; i < 20; i++)
{
Ping(sb + i.ToString());
}
Console.ReadKey();
}
static void Ping(string IPAddress)
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(IPAddress, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}", reply.Address.ToString());
}
}
}
}