2017-01-10 7 views
-7

Мне нужно преобразовать диапазон IP (например .: 46.28.66.16-46.28.71.255) в строковый массив.C# Как преобразовать диапазон IP в строковый массив?

+5

Любые усилия с вашей стороны? просто сделайте попытку и вернитесь со своим фрагментом –

+2

Возможный дубликат [C#: перечисление IP-адресов в диапазоне] (http://stackoverflow.com/questions/4172677/c-enumerate-ip-addresses-in-a-range) –

+0

@RahulHendawe - Как это когда-нибудь будет работать? –

ответ

0

Прилагается фрагмент кода для вашего вопроса. Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

string iprange = "46.28.66.16-46.28.71.255"; 
      var ipV2 = iprange.Split('-')[0]; 
      ipV2 = ipV2.Substring(0, ipV2.Length - 5); 
      //WriteLine(ipV2); 
      var range = iprange.Split('-').Select(x => x.Split('.')[2]).ToArray(); 
      var ips = Enumerable.Range(Int32.Parse(range[0]), (Int32.Parse(range[1]) - Int32.Parse(range[0])) + 1).ToList(); 
      List<string> fullips = new List<string>(); 
      foreach (var ip in ips) 
      { 
       List<int> ipranges = new List<int>(); 
       if (iprange.Split('-')[0].Contains(ip.ToString())) 
       { 
        var ipV4 = iprange.Split('-').Select(x => x.Split('.')[3]).ToArray(); 
        ipranges = Enumerable.Range(Int32.Parse(range[0]), 256 -Int32.Parse(range[0])).ToList(); 
       } 
       else 
       { 
        ipranges = Enumerable.Range(0, 256).ToList(); 
       } 

       foreach(var _ip in ipranges) 
       { 
        fullips.Add(string.Concat(ipV2, ip, ".", _ip)); 
       }     
      } 
}