2016-10-28 8 views
0

私はthis質問と同じ問題がありますが、私の言語はC#です(toHexStringメソッドはありません)。2つのIPアドレスを指定すると、すべての可能なIPアドレスを取得するにはどうすればよいですか?

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

そして、私が入ったリストで終わるしたい:

192.168.0.2 
192.168.0.3 
192.168.0.4 
192.168.0.5 
... 
192.168.0.254 

私の最初のソリューションは、すべての可能なIPのバイト当たりをループされたので、私の問題は、私はこれら二つのIPアドレスを持っているということでした。したがって

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}"); 
      } 
     } 

そして、それはすべてのグループで繰り返されます。そして、それは繰り返します。私の解決策は恐ろしいです。より良い方法がありますか?私が持っている範囲は、私に巨大なリストを作る思い出がなくなるほど大きくはないので、それについて心配しないでください。

+2

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

+0

私のためにそれを解決しました、ありがとう@viveknuna! – ohyeah

答えて

1

IPAddressRangeライブラリを使用して、あなたはそのようなあなたのIPアドレスを列挙することができます。

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

ありがとうございますが、私はむしろ外部ライブラリを使用しません。 – ohyeah

+0

@ohyeah ok。その後、あなたはvivek nunaリンクの質問で回答をチェックアウトすることができます。 – Nico

関連する問題