Алгоритм для вычитания одного диапазона IP из другого - C#

Узнай цену своей работы

Формулировка задачи:

Есть два файла с диапазонами IP адресов вида: 2.60.0.0-2.60.2.255 2.60.4.0-2.60.8.255 2.60.10.0-2.60.10.255 2.60.13.0-2.60.13.255 Нужно сформировать третий диапазон. Из первого файла original.txt исключить диапазоны из файла subtract.txt Я уже голову себе сломал. Ничего умнее, чем решать "в лоб" придумать не могу. А это - найти все IP из диапазонов первого файла, найти все IP из диапазонов второго файла, выкинуть лишнее. А потом снова как-то привести к диапазонам Ещё нашёл такую штуку: http://ipnetwork.codeplex.com/ Работает так:
IPNetwork ipnetwork = IPNetwork.Parse("192.168.168.100/24");
 
Console.WriteLine("Network : {0}", ipnetwork.Network);
Console.WriteLine("Netmask : {0}", ipnetwork.Netmask);
Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast);
Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable);
Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable);
Console.WriteLine("Usable : {0}", ipnetwork.Usable);
Console.WriteLine("Cidr : {0}", ipnetwork.Cidr);
И есть у этого класса разные прикольные методы. Но ничего подходящего я найти всё равно не смог. Впрочем у меня диапазоны для "вычитания" и в этом формате. Файл - subtractRanges.txt Посоветуйте, что делать с этой проблемой.

Решение задачи: «Алгоритм для вычитания одного диапазона IP из другого»

textual
Листинг программы
bool excluded;
foreach (string origItem in orig) {
 
    ipOrig = IPRange.Parse(origItem);
    excluded = false;
 
    foreach (string subtractItem in subtract) {
 
        ipSub = IPRange.Parse(subtractItem);
        IPRange[] res = ipOrig.Exclude(ipSub);
        if (res.Length > 0) {
            sw.WriteLine(res[0].ToString());
            sw.WriteLine(res[1].ToString());
            Console.WriteLine(res[0].ToString());
            Console.WriteLine(res[1].ToString());
            excluded = true;
        }
 
    }
 
    if (!excluded) {
        sw.WriteLine(ipOrig.ToString());
        Console.WriteLine(ipOrig.ToString());
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы