2017-01-10 14 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)); 
       }     
      } 
}