Как получить полный список ip адресов в определенном диапазоне?

alex1988

Client
Регистрация
13.07.2014
Сообщения
375
Благодарностей
155
Баллы
43
Есть диапазон ip адресов
99.11.789.0 - 99.22.889.255
Подскажите чем можно сконвертировать этот диапазон в
список ip адресов ?
вот так что бы было
99.11.789.0
99.11.789.1
99.11.789.2
...
99.22.889.255
Может у кого то есть готовый код?
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Три цикла for.

C#:
IZennoList lst = project.List["list"];

for (int i = 11; i <= 22; i++)
{
    for (int k = 789; k <= 889; k++)
    {
        for (int l = 0; l <= 255; l++)
        {
            lst.add(String.Format("99.{0}.{1}.{2}", i, k, l));
        }
    }
}
 

alex1988

Client
Регистрация
13.07.2014
Сообщения
375
Благодарностей
155
Баллы
43

alex1988

Client
Регистрация
13.07.2014
Сообщения
375
Благодарностей
155
Баллы
43
Рано Обрадовался((
С диапазона 192.168.100.250 - 192.168.101.5 - ничего не выдает((
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113

alex1988

Client
Регистрация
13.07.2014
Сообщения
375
Благодарностей
155
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
который выше код дали
тот который дали, выглядит рабочим для диапазона 99.11.789.0 - 99.22.889.255
ты приведи свой код, как ты его изменил что бы считался диапазон 192.168.100.250 - 192.168.101.5
 

alex1988

Client
Регистрация
13.07.2014
Сообщения
375
Благодарностей
155
Баллы
43
Решил на кубиках - если кому то надо- вот проект)
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Есть диапазон ip адресов
99.11.789.0 - 99.22.889.255
IP по определению не может содержать значение больше 255.
Но, если всё таки нужно сгенерировать валидные IP с указанного диапазона, можно использовать примерно такое решение:
65697


Генерация диапазона валидных IP:
string line = "192.168.100.250 - 192.168.101.5"; // Входящие данные
project.SendInfoToLog(string.Format(@"Диапазон IP: {0}", line)); // Вывожу в лог входящие данные
string[] arr_ip = line.Trim().Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); // Разбиваем по разделителю
uint ip_in = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[0]).GetAddressBytes().Reverse().ToArray(), 0); // Начало диапазона
uint ip_out = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[1]).GetAddressBytes().Reverse().ToArray(), 0); // Конец диапазона

// Определяем начало и конец диапазона (если вдруг начало больше чем конец)
uint max = ip_in > ip_out ?    ip_in : ip_out; // Ищем конец диапазона
uint min = ip_in > ip_out ?    ip_out : ip_in; // Ищем начало диапазона
uint count =  max - min; // Вычисляем сколько нужно сгенерировать IP
project.SendInfoToLog(string.Format("Начало: {0} Конец: {1} Количество: {2}", min, max, count+1)); // Выводим в лог

// Генерируем
List<string> ips = new List<string>(); // Список для хранения результата
for(uint i = max; i >= min; --i) ips.Add(string.Join(".", BitConverter.GetBytes(i).Reverse())); // Генерация IP

// Выводим в лог
foreach(string ip in ips) project.SendInfoToLog(ip); // Перебор сгенерированных значений IP с выводом в лог
project.SendInfoToLog(string.Format(@"Сгенерировано: {0} ip", ips.Count)); // Подводим итог - сколько сгенерировали
 

xawer

Client
Регистрация
06.06.2013
Сообщения
12
Благодарностей
5
Баллы
3
IP по определению не может содержать значение больше 255.
Но, если всё таки нужно сгенерировать валидные IP с указанного диапазона, можно использовать примерно такое решение:
Посмотреть вложение 65697

Генерация диапазона валидных IP:
string line = "192.168.100.250 - 192.168.101.5"; // Входящие данные
project.SendInfoToLog(string.Format(@"Диапазон IP: {0}", line)); // Вывожу в лог входящие данные
string[] arr_ip = line.Trim().Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); // Разбиваем по разделителю
uint ip_in = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[0]).GetAddressBytes().Reverse().ToArray(), 0); // Начало диапазона
uint ip_out = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[1]).GetAddressBytes().Reverse().ToArray(), 0); // Конец диапазона

// Определяем начало и конец диапазона (если вдруг начало больше чем конец)
uint max = ip_in > ip_out ?    ip_in : ip_out; // Ищем конец диапазона
uint min = ip_in > ip_out ?    ip_out : ip_in; // Ищем начало диапазона
uint count =  max - min; // Вычисляем сколько нужно сгенерировать IP
project.SendInfoToLog(string.Format("Начало: {0} Конец: {1} Количество: {2}", min, max, count+1)); // Выводим в лог

// Генерируем
List<string> ips = new List<string>(); // Список для хранения результата
for(uint i = max; i >= min; --i) ips.Add(string.Join(".", BitConverter.GetBytes(i).Reverse())); // Генерация IP

// Выводим в лог
foreach(string ip in ips) project.SendInfoToLog(ip); // Перебор сгенерированных значений IP с выводом в лог
project.SendInfoToLog(string.Format(@"Сгенерировано: {0} ip", ips.Count)); // Подводим итог - сколько сгенерировали
Почему то у меня код не работает. using System.Net; добавил. Сам список в папке создается с проектом? Ноль полный в коде. Что я делаю не так?
 
  • Спасибо
Реакции: luk911

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
99.11.789.0 - чисто для эрудиции - поинтересуйтесь как адресуется подсети и почему больше 255 адресов в подсети быть не может :-)
 

xawer

Client
Регистрация
06.06.2013
Сообщения
12
Благодарностей
5
Баллы
3
Три цикла for.

C#:
IZennoList lst = project.List["list"];

for (int i = 11; i <= 22; i++)
{
    for (int k = 789; k <= 889; k++)
    {
        for (int l = 0; l <= 255; l++)
        {
            lst.add(String.Format("99.{0}.{1}.{2}", i, k, l));
        }
    }
}
41.208.11.0-41.208.12.0 При таком, например, раскладе выдаст 2 ip всего. ps
lst.add заработал только так lst.Add
 

xawer

Client
Регистрация
06.06.2013
Сообщения
12
Благодарностей
5
Баллы
3
IP по определению не может содержать значение больше 255.
Но, если всё таки нужно сгенерировать валидные IP с указанного диапазона, можно использовать примерно такое решение:
Посмотреть вложение 65697

Генерация диапазона валидных IP:
string line = "192.168.100.250 - 192.168.101.5"; // Входящие данные
project.SendInfoToLog(string.Format(@"Диапазон IP: {0}", line)); // Вывожу в лог входящие данные
string[] arr_ip = line.Trim().Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); // Разбиваем по разделителю
uint ip_in = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[0]).GetAddressBytes().Reverse().ToArray(), 0); // Начало диапазона
uint ip_out = BitConverter.ToUInt32(System.Net.IPAddress.Parse(arr_ip[1]).GetAddressBytes().Reverse().ToArray(), 0); // Конец диапазона

// Определяем начало и конец диапазона (если вдруг начало больше чем конец)
uint max = ip_in > ip_out ?    ip_in : ip_out; // Ищем конец диапазона
uint min = ip_in > ip_out ?    ip_out : ip_in; // Ищем начало диапазона
uint count =  max - min; // Вычисляем сколько нужно сгенерировать IP
project.SendInfoToLog(string.Format("Начало: {0} Конец: {1} Количество: {2}", min, max, count+1)); // Выводим в лог

// Генерируем
List<string> ips = new List<string>(); // Список для хранения результата
for(uint i = max; i >= min; --i) ips.Add(string.Join(".", BitConverter.GetBytes(i).Reverse())); // Генерация IP

// Выводим в лог
foreach(string ip in ips) project.SendInfoToLog(ip); // Перебор сгенерированных значений IP с выводом в лог
project.SendInfoToLog(string.Format(@"Сгенерировано: {0} ip", ips.Count)); // Подводим итог - сколько сгенерировали
Заработало, спасибо! Поменял на IZennoList ips = project.Lists[ "ips" ]; там, где строка сохранения
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)