2016-10-28 1 views
0

Ich habe das gleiche Problem wie this Frage, aber meine Sprache ist C# (also keine toHexString-Methode). Also, mein Problem war, dass ich diese beiden IPs:Bei 2 IP-Adressen, wie bekomme ich alle möglichen IP-Adressen?

String start = "192.168.0.2" 
String end = "192.168.0.254" 

Und ich möchte mit einer Liste am Ende enthält:

192.168.0.2 
192.168.0.3 
192.168.0.4 
192.168.0.5 
... 
192.168.0.254 

Meine erste Lösung wurde pro Byte durch alle möglichen IP-Adressen Looping. Also

var startIpArray = start.Split('.'); 
    var endIpArray = end.Split('.'); 
    if (startIpArray [3] != endIpArray[3]) 
     { 
      for (var i = startIpArray [3]; i < endIpArray[3] ; i++) 
      { 
       listOfIps.Add($"{startIpArray[0]}.{startIpArray[1]}.{startIpArray[2]}.{i}"); 
      } 
     } 

Und wiederholen Sie das für jede Gruppe, mit mehr und mehr für Schleifen pro Nummer. Meine Lösung ist schrecklich. Gibt es einen besseren Weg? Die Bereiche, die ich habe, sind nie groß genug, um zu bewirken, dass mir der Speicher ausgeht und ich riesige Listen mache, also mach dir deswegen keine Sorgen.

+2

http://stackoverflow.com/questions/4172677/c-enumerate-ip-addresses-in-a-range/4172699 # 4172699 –

+0

Gelöst es für mich, danke @viveknuna! – ohyeah

Antwort

1

die IPAddressRange Bibliothek verwenden, können Sie Ihre IPs wie das aufzählen:

var start = IPAddress.Parse("192.168.0.2"); 
var end = IPAddress.Parse("192.168.0.254"); 

var range = new IPAddressRange(start, end); 

foreach (var ip in range) 
{ 
    Console.WriteLine(ip); 
} 
+0

Danke, aber ich würde lieber keine externe Bibliothek benutzen. – ohyeah

+0

@ohyeah ok. Dann kannst du die Antworten auf die Frage Vivek Nuna verlinken. – Nico

Verwandte Themen