2016-07-21 6 views
1

Ich verwende IPNetwork C# Bibliothek, um die erste und letzte verwendbare IP-Adresse zu finden. Was ich erreichen möchte ist Drucken oder Speichern in einer Liste aller IP-Adressen zwischen der ersten und letzten verwendbaren IP. Ich benutze das unten, um die erste und letzte verwendbare IP zu finden.Suchen Sie die gesamte IP zwischen der ersten IP und einer letzten IP

IPNetwork ipnetwork = IPNetwork.Parse("192.168.1.1/24"); 
    string first = ipnetwork.FirstUsable.ToString(); 
    string last = ipnetwork.LastUsable.ToString(); 

Wenn ich eine Netzmaske größer oder gleich 24 passieren ist es ganz einfach, die ganzen Bereich zu drucken, da mit/24 bei maximal wir 256 IP-Adressen verfügen, 254 für den Host und eine einfache Schleife erzeugen der ganze Bereich, weil nur das vierte Oktett geändert wird. Wenn ich jedoch eine Netzmaske kleiner als 24 Beispiel übergebe, dann muss auch das dritte Oktett geändert werden und eine einfache Schleife wird die Aufgabe nicht erfüllen, und eine andere Lösung muss gefunden werden. Auch der an IPNetwork.Parse übergebene Parameter ist möglicherweise nicht erforderlich, 192.168.1.1 oder 10.0.2.1 aber 192.168.1.130 oder 10.0.2.200, was ebenfalls berücksichtigt werden muss.

+0

Hilft dies: http://stackoverflow.com/questions/1470792/how-to-cal-the-ip-range-when-the-ip-address-and-the-netmask-is-iven und dies http://stackoverflow.com/questions/14327022/calculate-ip-range-by-subnet-mask? –

+0

Haben Sie das IPNetwork.Parse() geschrieben oder ist es eine bestehende Bibliothek? – Wamadahama

+0

Es ist eine vorhandene Bibliothek. – user2307236

Antwort

1

Beispiel 8:

IPNetwork net = IPNetwork.Parse("192.168.0.1/23"); 
IPNetwork ips= IPNetwork.Subnet(net , 32); 

Console.WriteLine("{0} was subnetted into /{1} ips", net ,  ips.Count); 
Console.WriteLine("First: {0}", subneted[0]); 
Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); 
Console.WriteLine("All :"); 

foreach (IPNetwork ipnetwork in ips) 
{ 
    Console.WriteLine("{0}", ipnetwork); 
} 

Ausgabe

192.168.0.1/23 was subnetted into /32 subnets 
First: 192.168.0.0/32 
Last : 192.168.1.254/32 
All : 
192.168.0.0 
192.168.0.1 
... 
192.168.1.254 

Viel Spaß!